Решил перековырять немного ядро
Мои нововведения:
Плюсы
Сырцы
engine/classes/Engine.class.php raw
engine/modules/hook/Hook.class.php raw
func_list_plugins() (поместить в engine/include/function.php)
Давайте потестим и обсудим, насколько всё это полезно?
зыж. модифицированное ядро отлично работает на моей тестовой площадке livestreet.ochecho.ru/
- Хуки вокруг инициализации модулей _before и _after за счет методов InitModule
- Переработанный __autoload
- Получение информации о классе методом GetClassInfo вплоть до пути к класс-файлу
Плюсы
- Никаких более регулярок для парсинга имени класса в других скриптах, всё в одном месте
- Нет более вилок в коде по поводу регистра в именах классов и методов. Везде учитывается регистр (собственно, чем нам грозит php6, насколько я помню)
- Стандартные хуки вокруг инициализации модулей — это просто прекрасно, я считаю, мне часто нужны были
- func_list_plugins() — замена куче дублирующегося кода
- Переработанный __autoload автоматом инклюдит все возможные классы, имена которых описаны по правилам ядра.
Сырцы
engine/classes/Engine.class.php raw
engine/modules/hook/Hook.class.php raw
func_list_plugins() (поместить в engine/include/function.php)
function func_list_plugins($bAll = false){
$sPluginsDir = Config::Get('path.root.server').'/plugins';
$sPluginsListFile = $sPluginsDir.'/plugins.dat';
$aPlugin = array();
if($bAll){
$aPluginRaw = array();
$aPaths = glob("$aPluginRaw/*", GLOB_ONLYDIR);
if($aPaths)
foreach($aPaths as $sPath){
$aPluginRaw[] = basename($sPath);
}
}else{
$aPluginRaw = @array_map('trim', file($sPluginsListFile));
}
if($aPluginRaw)
foreach($aPluginRaw as $sPlugin){
$sPluginXML = "$sPluginsDir/$sPlugin/plugin.xml";
if(is_file($sPluginXML)){
$aPlugin[] = $sPlugin;
}
}
return $aPlugin;
}
Давайте потестим и обсудим, насколько всё это полезно?
зыж. модифицированное ядро отлично работает на моей тестовой площадке livestreet.ochecho.ru/
5 комментариев
Офтопик — Было бы ещё круто ввести дополнительные хуки для работы с _любыми_ видами топиков. Я, например, делаю плагин, который для всех типов контента будет генерить ЧПУ — а получается что к топикам типа Опрос и Ссылка никак без бубна не подключиться :( А как жить плагину, если типов контента за счёт других плагинов будет больше?
в xtext я делаю наследование entity через aInherit и вершу с ними чего хочу
я недавно товарищу ort'у предлагал ввести AddHookPreg, который выполнял бы хук по регулярке в его названии
Пример: