Intereting Posts
закодировать массив Php на json Не удалось удалить более 20000 записей из базы данных mysql с помощью codeigniter datamapper Могу ли я тестировать paypal api из localhost Magento 2 идет ужасно медленно (режим разработчика) Разрешение неразрешимой зависимости ] Expose «использовать» классы для включенного файла Как получить значения внутри <! ]> с помощью php DOM? Получить твиттер видео mp4 url Morris.js Uncaught TypeError: Не удается прочитать свойство «match» undefined Перенаправление страницы входа / регистрации WordPress на пользовательскую страницу входа / регистрации Как добавить дополнительные поля и связанные геттеры / сеттеры из внешнего файла в один или несколько объектов Symfony / Doctrine, без наследования? Symfony form.vars.data vs form.vars.value Как создать базу данных в Google Cloud Cloud Задайте переменную в классе, который будет использоваться для нескольких функций / методов Расширить API-интерфейс Magento REST в настраиваемом модуле

неявное объявление переменной класса в php?

Я смотрел какой-то код, и мне сложно разрабатывать объявление переменных в phpклассах. В частности, кажется, что код, который я просматриваю, не объявляет переменные класса, прежде чем он их использует. Теперь это можно ожидать, но я не могу найти информацию о том, что это возможно. Так вы ожидали бы этого:

class Example { public function __construct() { $this->data = array(); $this->var = 'something'; } } 

работать? и создает ли эти переменные в экземпляре класса, который будет использоваться в дальнейшем?

Related of "неявное объявление переменной класса в php?"

Это работает так же, как и нормальное объявление переменной:

 $foo = 'bar'; // Created a new variable class Foo { function __construct() { $this->foo = 'bar'; // Created a new variable } } 

Классы PHP не совсем такие же, как на других языках, где переменные-члены должны быть указаны как часть объявления класса. Члены класса PHP могут быть созданы в любое время.

Сказав это, вы должны объявить переменную как public $foo = null; в декларации класса, если он должен быть постоянным членом класса, чтобы четко выразить намерение.

Так вы ожидали бы этого: (образец кода) для работы?
Да. Это довольно плохая практика (по крайней мере, это делает сканирование на C ++), но это нисколько не удивит меня. См. Пример 2 на следующей странице для примера использования другого класса, не объявляя его заранее. http://www.php.net/manual/en/language.oop5.basic.php Он выдает ошибку, если включен E_STRICT.

И создает ли эти переменные в экземпляре класса, который будет использоваться в дальнейшем?

Ага. Разве это не PHP Fun? Исходя из фона C ++ / C #, PHP занял некоторое время, чтобы вырасти на мне с его очень свободным набором текста, но он имеет свои преимущества.

Это полностью функционально, хотя мнения будут отличаться. Поскольку создание переменных-членов класса в конструкторе, они будут существовать в каждом экземпляре объекта, если не будут удалены.

Традиционно объявлять переменные-члены класса с информативными комментариями:

 class Example { private $data; // array of example data private $var; // main state variable public function __construct() { $this->data = array(); $this->var = 'something'; } }