Не исполняется магический метод__get() в PHP, что делать? Всем привет
Изучаю PHP дошел до ООП, где авто видеокурсов рассматривает магические методы __get() и __set(
Проблема возникла именно с методом __get(), а именно дело в том, что он не исполняется
Автор утверждает, что если мы обратимся к несуществующему свойству в php, то свойство будет создано автоматически и при обращении к нему будет выведено.class SomeClass

$obj = new SomeClass()
$obj->param = 4
echo $obj->param; // должно быть выведено
Я ввожу вышеуказанный код у автора отображается четвёрка, у меня нет
Я проверил все несколько раз, ошибиться здесь сложно, т.к. в коде буквально несколько строк
Далее автор утверждает, что при переопределении магических методов __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.
Подскажите что делать?

21 Авг 2019 в 07:03
155 +1
0
Ответы
1

Если метод __get() не используется в вашем коде, возможно проблема заключается в другом месте. Ниже представлены несколько шагов, которые вы можете предпринять, чтобы попытаться выяснить причину проблемы:

Проверьте правильность написания вашего кода. Убедитесь, что вы правильно написали название метода __get() и что он находится внутри класса.

Попробуйте использовать метод var_dump() для отладки. Посмотрите, какие данные передаются в метод __get() и вместо вывода просто значения переменных, используйте var_dump() для более подробного вывода.

Убедитесь, что ваш класс правильно наследует интерфейс ArrayAccess. Если вы хотите обращаться к объекту как к массиву, вам нужно использовать интерфейс ArrayAccess и его методы.

Проверьте настройки вашего локального сервера. Установите последнюю версию PHP, чтобы убедиться, что проблема не связана с устаревшей версией.

Попробуйте создать минимальный пример кода, который демонстрирует проблему, и опубликуйте его здесь. Возможно, другие пользователи смогут помочь вам выявить причину проблемы.

Надеюсь, эти советы помогут вам разобраться с проблемой метода __get() в вашем коде. Если у вас есть дополнительные вопросы, не стесняйтесь задавать их.

20 Апр в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 700 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир