Почему нету нотиса? В конструкторе присваиваю новому проперти значение и все работает:/**
* Constructor function
*/
protected function __construct()
{
parent::_construct();
$this->_helper = 'blablabla';
}
Но на снолько я понимаю, сначала надо декларировать его:/** @var object $_helper */
protected $_helper;
UPD: дело не в мадженте. Вот пример на чистом пхп:ini_set('display_errors', 1);
error_reporting(E_ALL);
/**
* Class Foo
*/
class Foo
{
/**
* Constructor function
*/
public function __construct()
{
$this->_bar = 'bar';
}
/**
* Print bar
*/
public function printBar()
{
echo $this->_bar;
}
}
$foo = new Foo();
$foo->printBar();

21 Авг 2019 в 07:04
220 +1
0
Ответы
1

Нет нотиса потому, что PHP не строго типизированный язык программирования и не требует явного объявления переменных перед их использованием. Если переменная не была объявлена до присваивания ей значения в конструкторе или методе, PHP автоматически создаст ее при первом использовании.

Однако, хорошей практикой считается явное объявление переменных перед использованием, чтобы улучшить читаемость кода и избежать ошибок. В примере с классом Foo на чистом PHP был использован необъявленный свойство $_bar в конструкторе, но так как PHP не строго типизированный, он автоматически создал это свойство. В данном случае, не было нотиса, но это не означает, что такой код является хорошей практикой.

Рекомендуется всегда объявлять переменные и использовать строгую типизацию в PHP для более надежного и читаемого кода.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир