В целом, поскольку я пишу в основном на других языках, кроме PHP, я люблю объявлять переменные своего экземпляра вне конструктора. Это позволяет мне взглянуть на верхнюю часть класса и получить представление обо всех свойствах и их модификаторах доступа без необходимости читать код.
Например, мне действительно не нравятся такие методы
// ...
// whole bunch of code
// ...
public function initialize() {
$this->foo = array();
// some other code to add some stuff to foo
}
Теперь, если я просто посмотрю на класс, я не могу быть уверен, что есть переменная foo, даже доступная. Если так, то я не знаю, есть ли у меня доступ к нему из-за пределов экземпляра.
Если вместо этого у меня есть:
public $foo = array();
В начале моего класса я знаю, что foo является свойством экземпляра, и что я могу получить к нему доступ из других мест.