Тема: Расширение для динамической инициализации хуков

https://github.com/rivetweb/punbb-ext-hooks-dev

Пригодится при разработке расширений. Т.к. не требует установки/удаления после изменений кода и добавления/удаления обработчиков.

Так же запилена утлилита .update-manifest.php которая автоматически заполняет раздел

<hooks>...</hooks>

по содержимому в папке расширения .hooks/

Вобщем раскидываем код хуков по файлам и получаем подсветку и проверку синтаксиса в редакторе кода и ускоряем процесс разработки.

+ hcs

Сайт Otto.Zukamoto

Поделиться

2

Re: Расширение для динамической инициализации хуков

Otto.Zukamoto, утилита .update-manifest.php копирует код из каждого файла в хук манифеста? В итоге файлы из папки hooks не нужны становятся?

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

3

Re: Расширение для динамической инициализации хуков

Пригодится при разработке расширений. Т.к. не требует установки/удаления после изменений кода и добавления/удаления обработчиков.

Otto.Zukamoto,  если все хуки складывать в директории /hooks, а в манифесте подключать хуки по принципу:

    <hook id="vf_pre_topic_loop_start"><![CDATA[
require $ext_info['path'].'/hooks/vf_pre_topic_loop_start.php';
    ]]></hook>

то результат сразу после правки кода.
+ меньше кода в бд и кеше
- каждый раз, а и несколько затрат на подключение файлов.

Сайт Xakker

Поделиться

4

Re: Расширение для динамической инициализации хуков

Xakker, но данный способ применяет только результат в файлах но не избавляет от установки-удаления расширений - когда нужно добавить или удалить еще 1 обработчик хука.

при использовании моего способа вы просто добавляете или удаляете файлы хуков и они автоматически будут применены или отключены. без установок/удалений. это тоже востребовано в режиме разработки.

когда разработка завершена - вы собираете манифест утилитой - и код всех хуков пропишутся автоматически в manifest.xml.
- можете использовать инклюды
- можете использовать инлайн код в каждом хуке как это встречается в классических расширениях
- можете вставлять вызовы функций или методов если хук это позволяет

выбор за разработчиком - то как он привык писать расширения.

Добавлено спустя 57 секунд:

Visman пишет:

Otto.Zukamoto, утилита .update-manifest.php копирует код из каждого файла в хук манифеста? В итоге файлы из папки hooks не нужны становятся?

именно. при сборке архива расширения их можно удалить или оставить.

Добавлено спустя 9 минут 12 секунд:

вот пример расширение редактирования статических разделов - страниц сайта (пока в разработке)

чтобы было более понятно
https://github.com/rivetweb/punbb-ext-s … nifest.xml

как видим тут  подключаются только 1 раз  файл модуля
а в хуках уже используются вызовы функций модуля.
но повторю - вы можете реализовывать обработчики хуков по своему. утилита не делает каких либо ограничений - просто встявляет код из файла в тег хука

Добавлено спустя 20 минут 5 секунд:

еще 1 момент - сейчас перезаписываются обработчики хуков
но это потом исправлю потом
https://github.com/rivetweb/punbb-ext-h … v/issues/2
т.к. идея в том чтобы сторониие расширения работали как есть. а менять нужно было только свои.

Сайт Otto.Zukamoto

Поделиться

5

Re: Расширение для динамической инициализации хуков

добавлены возможностьи

- вывод хуков (после того как примут пулреквест)
- вывод подключаемых файлов
- хуки инициализируются только заданные в файлах расширения в папке .hooks

Сайт Otto.Zukamoto

Поделиться

6

Re: Расширение для динамической инициализации хуков

Otto.Zukamoto, хотел спросить, раз уж вы спец в этом деле. Можно ли как либо проверять хуки на существование?
Например код навешен на определенный хук. Но если его не существует, то вывести код через другой хук.
Или это хакки?

Сайт Xakker

Поделиться

7

Re: Расширение для динамической инициализации хуков

Добавлена отладачная инфа
https://github.com/rivetweb/punbb-ext-h … информация

Добавлено спустя 5 минут 25 секунд:

Xakker пишет:

Otto.Zukamoto, хотел спросить, раз уж вы спец в этом деле. Можно ли как либо проверять хуки на существование?
Например код навешен на определенный хук. Но если его не существует, то вывести код через другой хук.
Или это хакки?


Можно сделать таким же образом
как сделано тут
https://github.com/rivetweb/punbb-ext-h … t.php#L172

т.е. на этапе запуска хуков es_essentials проверяем таблицу хуков - если нет такого хука вставляем свой хук в таблицу.
правда наверное возможны глюки.
У меня это только для отладки - на рабочем сайте я бы менял таблицу хуков.

Можно веть просто на несколько хуков навесить одинаковый код - это будет правильнее и проще.

Сайт Otto.Zukamoto

Поделиться

8

Re: Расширение для динамической инициализации хуков

Можно веть просто на несколько хуков навесить одинаковый код - это будет правильнее и проще.

Да, но тогда нужно проверить установлено ли данное расширение.
Например, расширение А вешает код на хук расширения Б и на расширение В, но нужно чтобы бы приоритет у Б. А если уж Б не установлен, тогда В.

Можно вытащить из кэша всю инфу о хуках и расширениях, но каа инициализировать текущий хук, для сравнения?

Сайт Xakker

Поделиться

9

Re: Расширение для динамической инициализации хуков

вешаете хук на оба расширения

- можно флаг устанавливать в коде обработчика - чтобы код выполнялся только 1 раз

или

- можно динамически добавить обработчик сделав поиск по $forum_hooks чтобы проверить установлено расширение или нет

Добавлено спустя 1 минуту 46 секунд:

https://github.com/rivetweb/punbb-ext-h … t.php#L190

Добавлено спустя 3 минуты 22 секунды:

таблица хуков это обыкновенный массив с кодом - так то как угодно можно менять.

Сайт Otto.Zukamoto

Поделиться

10

Re: Расширение для динамической инициализации хуков

добавил инструкцию по поднятию локального окружения - может комуто пригодится

https://github.com/rivetweb/punbb-ext-h … разработки

Добавлено спустя 12 минут 53 секунды:

репозитарий переименовал

https://github.com/rivetweb/punbb-ext-devtools

Сайт Otto.Zukamoto

Поделиться

11

Re: Расширение для динамической инициализации хуков

downgrade до php 5.5
т.к. это пока последняя максимальная версия для resin

кстати punbb запускается под resin java server (если есть ценители).

Сайт Otto.Zukamoto

Поделиться