Die Funktionen
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() und
__debugInfo() sind in PHP-Klassen magisch. Man kann keine Funktionen gleichen Namens in einer seiner Klassen haben, wenn man nicht die magische Funktionalität, die sie mit sich bringen, haben will.
overloading.php
class Person {
private $_data = array();
public $vorname;
public function __set($name, $value)
{
echo "set: $name<br>";
$this->_data[$name] = $value;
}
public function __get($name)
{
return $this->_data[$name];
}
public function __isset($name)
{
return isset($this->_data[$name]);
}
public function __unset($name)
{
echo "unset: $name<br>";
unset($this->_data[$name]);
}
}
$person = new Person();
$person->vorname = "Jens";
$person->nachname = "Haake";
if ($person->vorname) {
echo $person->vorname . "<br>";
} else {
echo "Person hat keinen Vornamen";
}
unset($person->vorname);
if ($person->nachname) {
echo $person->nachname . "<br>";
} else {
echo "Person hat keinen Nachname";
}
unset($person->nachname);