Skip to content

Trait that automatically calls getters and setters for property access.

License

Notifications You must be signed in to change notification settings

spekkionu/property-access

Repository files navigation

Property Access Trait

Build Status Code Coverage Scrutinizer Code Quality SensioLabsInsight

Trait that automatically calls getters and setters for property access.

use Spekkionu\PropertyAccess\PropertyAccessTrait;

class ExampleClass
{
    use PropertyAccessTrait;

    private $name;

    private $email;

}
$example = new ExampleClass();

$example->name = 'Bob';
$example->email = 'bob@example.com';

echo $example->name; // Bob

$example->fill(array(
    'name' => 'Steve',
    'email' => 'steve@example.com'
));

echo $example->email; // steve@example.com

Getters and Setters will be called

You can even use Value Objects

use Spekkionu\PropertyAccess\PropertyAccessTrait;

class ExampleClass
{
    use PropertyAccessTrait;

    private $name;

    private $email;

    public function setEmail(EmailAddress $email){
        $this->email = $email;
    }

}

// Value Object
class EmailAddress
{
    private $email;

    public function __construct($email)
    {
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            throw new InvalidArgumentException('Not a valid email address.');
        }
        $this->email = $email;
    }

    public function getValue()
    {
        return $this->email;
    }

    public function __toString()
    {
        return $this->getValue();
    }
}

// Usage
$example = new ExampleClass();
$example->email = new EmailAddress('bob@example.com');

About

Trait that automatically calls getters and setters for property access.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages