Перегрузка свойств и методов


* Следующий скрипт позволяет познакомиться с псевдометодами,
* которые реализуют механизм перегрузки свойств и методов в классе.


// Перегрузка методов и свойств класса

class TestClass {

    public $data = array();

    public function __set($name,$key) {
        $this->data[$name] = $key;
    }

    public function __get($name) {
        if (isset($this->data[$name]))
            return $this->data[$name];
        return null;
    }

    public function __isset($name) {
        return isset($this->data[$name]);
    }

    public function __unset($name) {
        unset($this->data[$name]);
    }

    public function __call($name, $args) {
       echo "Calling '$name'n";
       $this->testCall($args);
    }

    private function testCall() {
       echo "Number of args: ".func_num_args()."n";
    }

    public function __invoke($x) {
        var_dump($x);
    }

    public function __toString() {
        return __CLASS__;
    }
} // class

$a = new TestClass;
$a->key = "value";
if (isset($a->key)) {
    echo $a->key . "n";
}
$a->checkValue("key","value");
$a("test"); // __invoke()