Nette\SmartObject::__set PHP Method

__set() public method

public __set ( $name, $value ) : void
return void
    public function __set($name, $value)
    {
        $class = get_class($this);
        $uname = ucfirst($name);
        if (ObjectMixin::hasProperty($class, $name)) {
            // unsetted property
            $this->{$name} = $value;
        } elseif ($prop = ObjectMixin::getMagicProperty($class, $name)) {
            // property setter
            if (!($prop & 0b1000)) {
                throw new MemberAccessException("Cannot write to a read-only property {$class}::\${$name}.");
            }
            $this->{'set' . $name}($value);
        } elseif ($name === '') {
            throw new MemberAccessException("Cannot write to a class '{$class}' property without name.");
        } elseif (($methods =& ObjectMixin::getMethods($class)) && isset($methods[$m = 'set' . $uname])) {
            // old property setter
            trigger_error("Add annotation @property for {$class}::\${$name} or use {$m}()" . ObjectMixin::getSource(), E_USER_DEPRECATED);
            $this->{$m}($value);
        } elseif (isset($methods['get' . $uname]) || isset($methods['is' . $uname])) {
            // property setter
            throw new MemberAccessException("Cannot write to a read-only property {$class}::\${$name}.");
        } else {
            ObjectMixin::strictSet($class, $name);
        }
    }