Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Использование Zend Studio


Автор: Dima50 27.8.2009, 07:25
Привет всем.

Перехожу с редактора VIM на IDE ZEnd. И одной из причин такого перехода это "Автодополнение" работающие совершенно другом уровне.
Но вот возникает не большая проблема: при работе с framework CodeIgniter мы подгружаем в контролеер хелперы и библиотеки. 

Таким образом:

Код

$this->load->helper('url');
        $this->load->model('Log_model');
        $this->load->library('table');
        $this->load->library('pagination');


в будущем в методах контроллера мы обращаемся к подгруженным экземплярам классов библиотек и херлперов


Код

$this->Log_model->CloseLog($_POST['script_tag']);
$this->table->generate($query[1]);


Как видите сами обьекты совйста Log_model и table появляются уже после срабатывания конструктора модели, в ходе исполнения кода. По этому Zend Studio не знает как изспользовать "автодополнение". Получается что теряется болььшая часть удобства в кодинге. 

Я думаю что есть сопсобы работы в Zend Studio чтоб автодополение работало в таких ситуациях. Подскажите их если знаете.

Автор: solenko 27.8.2009, 07:54
Цитата(Dima50 @  27.8.2009,  06:25 Найти цитируемый пост)
Я думаю что есть сопсобы работы в Zend Studio чтоб автодополение работало в таких ситуациях. Подскажите их если знаете.

В вашем случае автодополнение невозможно, т.к. неизвестно объект какого типа (или даже какого базового типа или интерфейса) вернет load пока код не выполнен. Если бы вместо load испоьзовался стандартный механизм __autoload, то никаких проблем не возникало бы.

Можно попробовать лечит так:
Код


class foo /* extends не_знаю_что */ {
  /**
  * @var LogModel Instance of logger
  */
  private $Log_model;

  public function __construct() {
     $this->load('Log_model');
  }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)