PHP har två så kallade magiska funktioner för att implementera getters och setters. De heter __get respektive __set och de tar emot värdets namn som argument.
Här är en snabb klass för att demonstrera det hela.
Kod:
class Person
{
public function __set($name, $value)
{
switch ($name)
{
case 'firstname':
$this->firstname = $value;
break;
case 'lastname':
$this->lastname = $value;
break;
}
}
public function __get($name)
{
switch ($name)
{
case 'firstname':
return $this->firstname;
case 'lastname':
return $this->lastname;
}
return null;
}
private $firstname;
private $lastname;
}
Här är en alternativ implementation som istället använder en array för att lagra värdena:
Kod:
class Person
{
public function __set($name, $value)
{
$this->name[$name] = $value;
}
public function __get($name)
{
if (isset($this->name[$name])) {
return $this->name[$name];
}
return null;
}
private $name = array();
}
Och här kommer ett användningsfall:
Kod:
$person = new Person();
$person->firstname = 'Conny';
$person->lastname = 'Westh';
echo "{$person->firstname} {$person->lastname}";
Hoppas det hjälper dig!