Плагин «Расширение методов ядра (Wise Engine)»


ОПИСАНИЕ

Данный плагин дополняет синтаксис ядра ЛС возможностью вызовов методов без использования подчеркивания. Вам ведь тоже хотелось писать код так же:

$this -> User -> GetUserByLogin ('admin') -> getLogin ()


вариант с вызовом методов модулей плагина:

$this -> PluginTest -> ModuleTest -> GetTestForTest ()


идентичен

$this -> PluginTest -> Test -> GetTestForTest ()


Документация и более полное описание здесь.

12 комментариев

avatar
Здорово. Но мне кажется это надо не отдельным плагином, а пулреквестом на гитхаб, чтобы работали оба варианта.

Ситуация комична, разработчики будут заявлять: «Чтобы работал плагин ****, ставьте дополнительный плагин, потому что вместо вызова через подчеркивания я вызываю методы каноническим способом.»
avatar
я понимаю, но сначала нужно протестировать и поразмыслить о целесообразности о таком подходе вообще. этот плагин был сделан из любопытства.
avatar
И зачем он тогда в каталоге?
avatar
может найдутся энтузиасты протестировать и вообще для вызова дискуссии «нужен ли такой метод вызовов вообще»
avatar
Я с удовольствием потестирую, пришли на почту support@lsmods.ru
Но я не уверен, что это нужно в каталоге, обычные юзеры точно не поймут что и зачем им это на сайте, причем отдельным плагином.
avatar
пока добрался к комментарию — плагин уже прошел модерацию.
avatar
+1
avatar
Хм, пытаюсь осмыслить, насколько это хорошо, но пока не могу прийти к какому-то однозначному мнению. Основная причина колебаний, наверное, в том, что когда я вижу вызов
$this->Test_GetVal();
то я точно знаю, что тут идет вызов метода GetVal() модуля Test (или ModuleTest, если быть более точным). А вот когда
$this->Test->GetVal();
то это как-то совсем не очевидно. Тут Test вполне может оказаться свойством текущего класса, которому присвоен какой-то объект. Сравните:
$this->оTest->GetVal();
Достаточно программеру наплевать на венгерскую нотацию и путаница обеспечена.
avatar
согласен, но тогда можно переделать на

$this -> Test () -> GetVal ();

для однозначного понимания. вот потому пул реквест не делал. нужно подумать нужно ли оно вообще.
avatar
Не, тогда путаница с методами текущего класса. :)

Если уж и идти таким путем, то нужно отказаться от $this, например, так:
$ls->Test->GetVal();

или
LS::Test->GetVal();

А еще лучше:
LS::ModuleTest->GetVal();

Ведь нас не ломает писать префиксы Action… Plugin… и т.д., поэтому и Module… писать не очень должно ломать

Зато все более чем очевидно и однозначно
avatar
Да, наверное так понятней всего.
avatar
LS::ModuleTest->GetVal();
Вот такой вариант мне более по душе.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.