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
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');