Enable accessing source data as object properties.
Get on non-existing property will throw DomainException,
or return null if option o_option_access_supress_error
is set to true
.
Trait synopsis
trait InvokableTrait
{
use TypeTrait;
/**
* Returns the value of specified property.
* @param string $key The property to retrieve.
* @return mixed Value for property.
* @throws Error If specified property do not exist.
*/
public function __get(string $key): mixed;
/**
* Assigns a value on specified property.
* @param string $key The property to assign the value to.
* @param mixed $value The value to set.
*/
public function __set(string $key, mixed $value): void;
/**
* Whether a property exists.
* @param string $key A property to check for.
* @return True if property exist.
*/
public function __isset(string $key): bool;
/**
* Unsets a property.
* @param string $key The property to unset.
*/
public function __unset(string $key): void;
}
Examples
use Phrity\O\Object\PropertyAccessTrait;
class MyClass
{
use PropertyAccessTrait;
public function __construct(object $input)
{
$this->initialize($input);
}
}
$class = new MyClass((object)["a" => 1]);
$class->a; // => 1
$class->b = 2;
isset($class->a); // => true
unset($class->b);
Requirements
PHP
^8.0