Генерим autocomplete для LiveStreet под Eclipse
4
1. ставим ls-yii из репозтария
2. делаем
3. запускаем генератор
4. чекаем на ошибки получившиеся файлы
5. вписываем в проект external source

6. дико тащимся и говорим спасибо
траблашутинг:
— вырубите авадимовскую админку, у нее дикий автолоадер
— в GencodedocCommand закомментируйте 2 ob_start()'а
— смотрите на трейсы
чтобы поцоны совсем расслабились, методы для чистого движка
yaglov.ru/uploader/upload/0lvmlcc-01k50hc-0d1730z/files/codedoc.zip
2. делаем
chmod +x plugins/yii/include/framework/lsyiic
mkdir codedoc && chmod 0777 codedoc3. запускаем генератор
plugins/yii/include/framework/lsyiic lsshell gencodedoc end4. чекаем на ошибки получившиеся файлы
5. вписываем в проект external source

6. дико тащимся и говорим спасибо
траблашутинг:
— вырубите авадимовскую админку, у нее дикий автолоадер
— в GencodedocCommand закомментируйте 2 ob_start()'а
— смотрите на трейсы
чтобы поцоны совсем расслабились, методы для чистого движка
yaglov.ru/uploader/upload/0lvmlcc-01k50hc-0d1730z/files/codedoc.zip
- +7
- 03 декабря 2011, 07:57
- 1d10t
В PHPStorm, кстати, работать не будет. Multiple Declarations все дела. Вообще и будет только в нетбинс мне кажется.
Решить можно попробовать состряпав аналогичный файл только используя phpDOC @method
, но не уверен в результате
ЗЫ
Класс называть Object не самая лучшая идея была, учитывая что есть PHPшный class Object
Решить можно попробовать состряпав аналогичный файл только используя phpDOC @method
, но не уверен в результате
ЗЫ
Класс называть Object не самая лучшая идея была, учитывая что есть PHPшный class Object
ре-зы. а еще он почему-то декларирован как абстрактный в engine/classes/Object.class.php
как так? почему фатал не появляется?
как так? почему фатал не появляется?
В PhpStrom вот так работает «Autopopup documentation feature» blog.jetbrains.com/webide/2010/07/autopopup-documentation-feature/
учитывая что есть PHPшный class Objectможет не класс, а тип?
Вот список классов — de2.php.net/manual/en/reserved.classes.php
Кстати а какую IDE для разработки LiveStreet используешь? Если не IDE, то чем для этих целей пользуешься?
Всегда использовал Zend 5, с переходом на mac пришлось использовать Zend 7, сейчас смотрю в сторону PhpStorm
вроде в нем все хорошо, но вот не смог найти, как определять — сохранен файл или нет? вроде стандартная фича, без неё уже не могу
У меня раньше рефлекс был — Ctrl+S пальцы сами жали, любая пауза, чуть задумался либо через какой-то промежуток времени, автоматом — тынц. А в PhpStorm автосохранение работает, сначала немного непривычно было, но щас настолько к этому привык, что когда мелкие правки делаю в каком-нить Notepad++, то забываю сохранять, хоть там и есть индикатор, сохранен файл или нет
пока не разобрался, как этот генератор запускать в винде, написал скрипт, который сгенерил мне все классы)
А правильно ли от Object?
Допустим, есть PluginBla и PluginFoo (и подгружаются именно в таком порядке), и в обоих наследуется класс ActionTopic. Значит, явно у нас определяются классы:
Я для себя сварганил скрипт, который генерит дополнительно такие объявления:
И теперь, если я правлю код в классе PluginFoo_ActionTopic, то PhpStorm нормально определяет всю цепочку наследования, показывает перекрытие классов, вызывается автокомплит свойств и методов родительских классов при написании кода и проч. Короче, все, как доктор прописал.
Если же PluginBla_Inherit_ActionTopic и PluginFoo_Inherit_ActionTopic наследовать сразу от Object, то вся цепочка наследования ломается.
У меня пока только вот руки не дошли методы модулей описать, которые через «магические» методы вызываются, типа $this->Viewer_Assign(). Да и не придумал я еще, как это лучше сделать.
Допустим, есть PluginBla и PluginFoo (и подгружаются именно в таком порядке), и в обоих наследуется класс ActionTopic. Значит, явно у нас определяются классы:
class PluginBla_ActionTopic extends PluginBla_Inherit_ActionTopic {}
class PluginFoo_ActionTopic extends PluginFoo_Inherit_ActionTopic {}Я для себя сварганил скрипт, который генерит дополнительно такие объявления:
class PluginFoo_Inherit_ActionTopic extends PluginBla_ActionTopic {}
class PluginBla_Inherit_ActionTopic extends ActionTopic {}И теперь, если я правлю код в классе PluginFoo_ActionTopic, то PhpStorm нормально определяет всю цепочку наследования, показывает перекрытие классов, вызывается автокомплит свойств и методов родительских классов при написании кода и проч. Короче, все, как доктор прописал.
Если же PluginBla_Inherit_ActionTopic и PluginFoo_Inherit_ActionTopic наследовать сразу от Object, то вся цепочка наследования ломается.
У меня пока только вот руки не дошли методы модулей описать, которые через «магические» методы вызываются, типа $this->Viewer_Assign(). Да и не придумал я еще, как это лучше сделать.
та как не делай, при добавлении нового плагина надо перегенеривать.
Никто не знает, эклипсу можно ли написать паттерн, по которому бы он отслеживал автолоад и не матерился на Plugin_Module_Method?
Никто не знает, эклипсу можно ли написать паттерн, по которому бы он отслеживал автолоад и не матерился на Plugin_Module_Method?
Хех, так у меня как раз при активации нового плагина и происходит перегенерация цепочек. Так что «все учтено могучим ураганом» ;)
в чем смысл лепить такие длинные цепочки? ведь не известно в каком порядке они выстроятся (плаги же могут быть в разном порядке, ведь так ?)
в принципе согласен. Название, применение, аргументы почти не меняются при переопределении. К тому же я всегда переопределяю так? чтоб не запутаться, чего там передавалось в аргументах:
Даже, если поменяется в исходной, то переопределение сработает в большинстве случаях.
public function Method() {
$args = func_get_args();
$result = call_user_func_array(array('parent',__FUNCTION__),$args);
...
}
Даже, если поменяется в исходной, то переопределение сработает в большинстве случаях.
Это палка о двух концах. С одного конца — лепим этот код и не задумываемся. С другого — переименование метода, изменение типа и/или числа аргументов, как правило, просто так от балды не делается. Поэтому можно упустить какие-то важные нюансы рефакторинга родительских классов.
По мне так пусть лучше ошибка вылезет из-за несовпадения имен методов или числа передаваемых параметров — исправить недолго, но зато я буду знать, что был рефакторинг, посмотреть, на что он может повлиять, и, возможно, свой код переписать под новые условия
По мне так пусть лучше ошибка вылезет из-за несовпадения имен методов или числа передаваемых параметров — исправить недолго, но зато я буду знать, что был рефакторинг, посмотреть, на что он может повлиять, и, возможно, свой код переписать под новые условия
Комментарии (40)
RSS свернуть / развернуть