Yii: не работает автодополнение для методов модели в PHPStorm?

Есть контроллер AjaxController.php.

В init() контроллера создаются объекты — экземпляры классов:



public function init() {<br>
		...<br>
		// init classes<br>
		$this->_oModelSite = new Site;<br>
		$this->_oHelperText = new HelperText;<br>
		...<br>
	}<br>




В методах данного класса (контроллера) почему-то не работает автодополнение (например, для метода processPostArray из класса HelperText):

public function actionAutoBrand() {<br>
		...<br>
		// getting POST data<br>
		$sBrand = $this->_oHelperText->processPostArray($_POST['brand']);<br>
		...<br>
	}<br>




Если создавать экземпляр класса прямо в методе контроллера, то всё работает хорошо. Но вот с init() почему-то не проходит.

В чём может быть проблема?
  • Вопрос задан
  • 4061 просмотр
Решения вопроса 1
Пора начать использовать PHPDoc
/**
 @var Site
*/
protected $_oModelSite;
/**
 @var HelperText
*/
protected $_oHelperText;


Зачем это «o» в начале? И так же понятно что это экземпляр, а не тип.
Сейчас есть полноценная инкапсуляция, нет необходимости писать префикс "_" что бы дать знать что это приватный тип.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Melorian
@Melorian
PHP, JAVA-разработчик
В данном случае, скорее всего, PHPStorm просто не знает, что где-то заранее вызывается функция init, в которой создаются экземпляры класса. Возможно попробовать это обойти, напрямую добавив вызов функции init в __construct, или унаследовать __construct, создавая экземпляры в нем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы