Я знаю, что если $ var никогда не объявляется, он может быть объявлен с подобъектом, таким как $ var-> mysubvar = 1;
Но если $ var = «123» упомянуто заранее, то $ var-> mysubvar = 1 вызовет ошибку. Как объявлено заранее
Я слышал, что это было названо «Динамическое связывание». Но когда я на самом деле изучаю этот термин, я не могу найти в руководстве по PHP такого описания, которое соответствует этому сценарию и поведению.
Это поведение называется «Динамическое связывание»? Есть ли конкретное имя для этого. Но если это имя, то почему PHP Manual не включает такую технику или поведение?
Вопрос заключается в том, как называется имя, описывающее такое поведение, при котором не нужно объявлять объект заранее, и объект будет автоматически создан, если объявлен подобъект. (например, javascript не позволит манипулировать объектом, не выполнив сначала var myvar = 1 (или его эквивалент).)
Ответ:
Ах да, это действительно иметь дело с динамической типизацией.
Что такое динамическая типизация?
Проблема, которую вы упомянули, связана с динамической типизацией, а не с динамической привязкой. PHP документация по типам переменных покрывает это.
Тип переменной обычно не устанавливается программистом; скорее, это решается во время выполнения PHP в зависимости от контекста, в котором используется эта переменная.
Причина, по которой ваши примеры генерируют ошибки, заключается в несовпадении типов.
Например, предполагая $var
не установлен, выполняется $var->mysubvar = 1
создаст $var
как объект. Попытка следовать этому с $var = 5
приведет к ошибке, потому что ваша предыдущая команда указала, что $var
будет объект, а не скаляр.
Других решений пока нет …