JackShcherbakov
@JackShcherbakov

Почему не работает метод доступа?

Здравствуйте!

Этот код не должен разрешать устанавливать возвраст меньше 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() если мы обращаемся к открытому (публичному) свойству?
Ничерта не понятно. В документации тоже бред написан. Магические методы какие-то...
Заранее спасибо!
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы