You are viewing documentation for an outdated version. It is no longer supported!

Properties Visibility

Protected vs. Private properties

By default, only protected properties will be accessible (overloaded). This means that private declared properties are inaccessible.

use Aedart\Properties\Overload;

class Person
{
    use Overload;

    protected ?string $name = null; // Accessible

    private ?int $age = null; // Inaccessible

    // ...remaining not shown ...
}

Behaviour override

Should you wish to also expose your private declared properties, then this behaviour can be set per object from an inside scope.

use Aedart\Contracts\Properties\AccessibilityLevels;
use Aedart\Properties\Overload;

class Person
{
    use Overload;

    protected ?string $name = null; // Accessible

    private ?int $age = null;    // Accessible

    public function __construct(){
	    // Change the property accessibility to private
	    $this->setPropertyAccessibilityLevel(AccessibilityLevels::PRIVATE_LEVEL);
    }
}