Изменение наименований классов в движке
В LiveStreet произошел рефакторинг формы наименований классов. Данное предложение высказывалось avadim'ом еще на LS-party и теперь реализовано.
Для плагинов добавляется префикс Plugin[имя плагина]_, например, Plugin[имя плагина]_Module[имя модуля]_Entity[имя сущности].
Подключение маппера теперь происходит автоматически при вызове метода Engine::GetMapper() в модуле:
Engine::GetMapper(__CLASS__) — вернет маппер совпадающий с именем модуля
Engine::GetMapper(__CLASS__,'Test') — вернет маппер Test
Такой подход позволит навести порядок и логику в названия классов.
В связи с этим плагины, написанные под релизную версию 0.4, работать не будут на последней версии из SVN. Для обеспечения их работоспособности нужно только переименовать классы согласно новым правилам.
Новые формы:
- модуль — Module[имя модуля]
- маппер — Module[имя модуля]_Mapper[имя маппера]
- сущность — Module[имя модуля]_Entity[имя сущности]
Для плагинов добавляется префикс Plugin[имя плагина]_, например, Plugin[имя плагина]_Module[имя модуля]_Entity[имя сущности].
Подключение маппера теперь происходит автоматически при вызове метода Engine::GetMapper() в модуле:
Engine::GetMapper(__CLASS__) — вернет маппер совпадающий с именем модуля
Engine::GetMapper(__CLASS__,'Test') — вернет маппер Test
Такой подход позволит навести порядок и логику в названия классов.
В связи с этим плагины, написанные под релизную версию 0.4, работать не будут на последней версии из SVN. Для обеспечения их работоспособности нужно только переименовать классы согласно новым правилам.
39 комментариев
и на какую версию уже оглядываться? Только занялся переходом на 0,4 с учетом доработки всего — теперь получается она уже не актуальна?
Очень утомительно ждать по году новых релизов, понято что есть svn, но я так понимаю ЛС уже нечто серьезнее.
стало:
— после iPad Party, 30 мая С.Джобс анонсирует прошивку, в которой написано «На iPad будут работать только те программы, которые начинаются с префикса iPad_» :)
Мне кажется, если бы была задумка оставить это нововведение на 0,5 версию — зачем было сейчас ее так афишировать?
Порядок наводите после выхода релиза… Вам-то порядок, а вот все, кто использует продукт — чувствуют дисбалансы. Не говорю уже о тех, кто пишет плагины, переписывать 3ий раз мне бы уже не хотелось.
Плохо, ребята!
Портировать плагин с 0.4 на 0.4.1 потребует не больше 10 минут, никакой функционал менять/дорабатывать не придется.
Получается, кстати, довольно интересно. Если новую версию долго не выпускать — все кричат и требуют её, а если выпустить новую через месяц — все опять кричат.
1 раз в год — Стабильнее(практичнее)(а то как сегодня..), не нужно думать что через 3 месяца — «все по-новой». У кого-то переделок название в шапке поменять, а кого-то заказанные «самописные» модули переделать.
Ты(орт) у нас «жираф» — тебе виднее, «заведи одну политику и веди ее», «прыгать в стороны — всем получается — неудобно». имхо
Кричат сейчас не из-за новой версии, а в силу того, что она не несёт нового функционала, а только лишь несвоевременно реализует давно обсуждавшиеся соглашения об именовании и в некоторой степени дестабилизирует ситуацию с разработкой сторонних расширений.
Тут уж из опасений внезапных изменений поневоле задумаешься, нужно ли начинать что-то делать, либо для надёжности подождать ещё немного, чтобы не пожинать потом плоды несовместимости.
Теперь именования классов получают четкую и внятную систему именований. Не знаю, как у других разработчиков, но у меня ни разу не получилось написать имя класса сущности (entity) с первого захода. Поэтому я для себя давно уже решил, что надо упорядочить это безобразие, и если глянете сущности и мапперы админпанели, то увидите уже сейчас там такие имена классов: PluginAceadminpanel_ModuleAdmin_EntityUser или PluginAceadminpanel_ModuleAdmin_MapperAdmin. :) Рад, что Максим прислушался к моим советам.
Проблем с адаптацией плагинов я вообще не вижу. Тут Макс прав — просто немного имена классов изменить. Любые самописные, заказные, тиражируемые — абсолютно любые модули портируются на счет раз.
Например, был у нас класс PluginPage_Page, т.к. это модуль, то переименовываем его в PluginPage_ModulePage. И запускаем в ТоталКоммандоре поиск строки PluginPage_Page во всех php-файлах. Везде, где нашли, меняем эту строку на PluginPage_ModulePage. Делаем такую же замену для сущности (меняем PluginPage_PageEntity_Page на PluginPage_ModulePage_EntityPage) и для маппера (меняем PluginPage_Mapper_Page на PluginPage_ModulePage_MapperPage). Все! Вот мы целый плагин адаптирвали под новую версию! Больше не нужно ни-че-го! Трудно? Долго? Страшно?
ЗЫ Я плагин Page только для примера привел, на самом деле там уже все изменено.
Переделал свои плагины под 4.1, но столкнулся с тем, что Engine::GetEntity() имеет прежний синтаксис для сущностей в плагинах, т.е. например Engine::GetEntity(«PluginTest_Test_Something») — работает, а Engine::GetEntity(«PluginTest_ModuleTest_EntitySomething») — казалось бы используется полное имя класса, но данный вариант не предусмотрен в движке… В будущем надеюсь будет возможность указывать класс сущности в полном формате, для порядка, так сказать :)