Здравствуйте!
Этот код не должен разрешать устанавливать возвраст меньше 20, однако любое значение можно установить - непорядок. Как исправить?
<?php
class Car{
public $age = 30;
function __set($name, $value){
if($value>20){ //Возвраст может быть только больше 20-и
$this->$name = $value;
}
}
}
$car = new Car();
$car->age = 15; //Такого делать нельзя!
echo $car->age;
?>
Почему __set() - магический метод? С чего такое название? В чем его особенность?
В книге, которую я читаю, есть противоречие
Функции доступа не применяются к закрытым свойствам.
Следующий опрератор неявно вызовет функцию __set():
$a->attribute = 5;
Ну и каким образом вызовется функция __set() если мы обращаемся к открытому (публичному) свойству?
Ничерта не понятно. В документации тоже бред написан. Магические методы какие-то...
Заранее спасибо!