Почему свойство объекта пустого класса не выдает ошибку при доступе к свойству?

Я читал о магических методах php __get и __set, и, насколько я понимаю, полезно получить доступ к неопределенному или частному свойству класса. Итак, я пытался получить доступ к неопределенному свойству класса, чтобы проверить, какую ошибку он выдает. Но вместо ошибки он дает значение, которое я присвоил свойству объекта. см. код ниже.

class test{
}
$obj = new test();
$obj->name = "Hello";
echo $obj->name; 

Вывод - «Привет».

Я не понимаю, почему он не выдает никаких ошибок? Какая польза от __get для неопределенной переменной ?? Почему в качестве вывода выдается «Привет»?

Это нет undefined, потому что вы явно назначенный значение для него в предыдущей строке, которая автоматически «создала» его.

CBroe 29.06.2018 08:59

Ох, ладно . Если я явно назначил значение, поэтому я могу получить доступ напрямую, но чем будет использование __get и __set для свойства undefined.

Chaitsi Patel 29.06.2018 09:04

Если вы реализуете свой собственный магический метод установки, то там вы можете, например, решить, какие свойства который вы хотите разрешить создавать таким образом… например, только те, которые начинаются с определенного префикса, а все остальные будут отклонены. А магический получатель может, например, вернуть значение по умолчанию для свойств, которые не существуют (пока) ...

CBroe 29.06.2018 09:07

Хм. Я сбит с толку . Было бы здорово, если бы вы могли привести пример.

Chaitsi Patel 29.06.2018 09:32

Не совсем цель этого сайта ... Предложите вам найти книгу или несколько учебных пособий по этому вопросу.

CBroe 29.06.2018 09:33

Это довольно просто: __get будет вызван, если вы попытаетесь читать свойство, которого не существует. __set будет вызван, если вы попытаетесь использовать назначать для несуществующего свойства. Без __set$obj->name = ... просто создает свойство name, отныне оно делает существует, и вы можете просто получить к нему доступ.

deceze 29.06.2018 10:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
22
0

Другие вопросы по теме