AFatum
@AFatum
Начинающий...

Не исполняется магический метод__get() в PHP, что делать?

Всем привет!
Изучаю PHP дошел до ООП, где авто видеокурсов рассматривает магические методы __get() и __set()
Проблема возникла именно с методом __get(), а именно дело в том, что он не исполняется.
Автор утверждает, что если мы обратимся к несуществующему свойству в php, то свойство будет создано автоматически и при обращении к нему будет выведено.
class SomeClass{
}
$obj = new SomeClass();
$obj->param = 4;
echo $obj->param; // должно быть выведено 4

Я ввожу вышеуказанный код у автора отображается четвёрка, у меня нет.
Я проверил все несколько раз, ошибиться здесь сложно, т.к. в коде буквально несколько строк.
Далее автор утверждает, что при переопределении магических методов __get(), __set(), можно работать с несуществующими свойствами класса.
Автор показывает это на примере следующего кода:
class MyClass {
    function __set($n, $v){
        echo $n, ":", $v;
    }
    function __get($n){
        echo $n;
    }
  }

$odj = new MyClass();
$odj->param = 100;
echo $obj->param;

У автора выводится значение "param:100param", у меня же в аналогичной ситуации выводит просто "param:100".
Т.е. получается ситуация, когда по каким-то причинам метод __get() не исполняется.
Тут я понимаю, что возможно дело в настройках моего локального сервера, на котором я обучаюсь, но после его переустановки все равно ничего не получается.
Версия php - 5.5
Подскажите что делать?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
DevMan
@DevMan Куратор тега PHP
Подскажите что делать?
как минимум исправить odj на obj и включить вывод ошибок.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
Всё дело в том, что вы не показываете весь код.
Указанные примеры дают совершенно одинаковый результат на PHP 5.6-7.1RC3 и HHVM 3.10-3.14: https://3v4l.org/XE8WC
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы