| 
<?php
 /*
 * This file is part of Chevere.
 *
 * (c) Rodolfo Berrios <[email protected]>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 declare(strict_types=1);
 
 namespace Chevere\Tests\src;
 
 use Chevere\DataStructure\Map;
 use stdClass;
 
 abstract class BaseClass
 {
 public const CONSTANT = 'constant';
 
 public static string $static = 'static';
 
 public int $code = 101;
 
 public object $public;
 
 public readonly string $readonly;
 
 private object $private;
 
 private object $protected;
 
 private object $circularReference;
 
 private object $deep;
 
 public function withPrivate(): self
 {
 $new = clone $this;
 $new->private = new Map(test: 'some');
 
 return $new;
 }
 
 public function withProtected(): self
 {
 $new = clone $this;
 $new->protected = new stdClass();
 
 return $new;
 }
 
 public function withPublic(): self
 {
 $new = clone $this;
 $new->public = new stdClass();
 $new->public->string = 'string';
 $new->public->array = [];
 $new->public->int = 1;
 $new->public->bool = true;
 
 return $new;
 }
 
 public function withCircularReference(): self
 {
 $new = clone $this;
 $new->circularReference = $new;
 
 return $new;
 }
 
 public function withDeep($deep): self
 {
 $new = clone $this;
 $new->deep = $deep;
 
 return $new;
 }
 }
 
 |