grisha2217
Проверенные
- Сообщения
- 916
- Решения
- 6
- Реакции
- 1,393
- Баллы
- 8,315
Всем привет, планирую написать пару плагинов на ксен, которые будут независимы друг от друга, но при этом не нести большой нагрузки.
Сейчас я использую единый класс extender для множества своих плагинов, повесил обработчик на событие на load_class
По-моему, это удобная штука: хочешь расширить класс - просто добавил сюда нужный класс для поиска и класс, который должен быть вызван. А если создавать обработчик под каждый плагин и создавать еще файл для этого... слишком геморно плюс лишние файлы вызываются каждый раз (если много плагинов), хотелось бы реализовать как-нибудь единый файлик, чтобы можно было удобно расширять классы. У кого есть идеи?
Сейчас я использую единый класс extender для множества своих плагинов, повесил обработчик на событие на load_class
PHP:
const AutoBumpThread = 'Lolzteam_AutoBumpThread';
const ArbitrageSystem = 'Lolzteam_AS';
const LolzteamRoot = 'Lolzteam';
const SearchByIp = 'Lolzteam_SearchByIp';
const FSD = 'Lolzteam_ForumSearchThreads';
class Lolzteam_EventListener_Extender
{
public static function Extend($class, &$extend)
{
if ($class == 'XenForo_DataWriter_User')
{
$extend[] = self::_getExtendingClass(LolzteamRoot, $class);
}
if ($class == 'XenForo_ControllerPublic_Report')
{
$extend[] = self::_getExtendingClass(LolzteamRoot, $class);
}
if ($class == 'XenForo_Model_Report')
{
$extend[] = self::_getExtendingClass(LolzteamRoot, $class);
}
if ($class == 'XenForo_ReportHandler_Post')
{
$extend[] = self::_getExtendingClass(LolzteamRoot, $class);
}
if ($class == 'XenForo_ControllerPublic_Thread')
{
$extend[] = self::_getExtendingClass(AutoBumpThread, $class);
$extend[] = self::_getExtendingClass(ArbitrageSystem, $class);
$extend[] = self::_getExtendingClass(FSD, $class);
}
if ($class == 'XenForo_ControllerPublic_Forum')
{
$extend[] = self::_getExtendingClass(ArbitrageSystem, $class);
$extend[] = self::_getExtendingClass(FSD, $class);
}
if ($class == 'XenForo_ControllerPublic_Member')
{
$extend[] = self::_getExtendingClass(ArbitrageSystem, $class);
}
if ($class == 'XenForo_ControllerPublic_Search')
{
$extend[] = self::_getExtendingClass(SearchByIp, $class);
}
}
protected static function _getExtendingClass($prefix, $class)
{
return str_replace('XenForo', $prefix, $class);
}
}
По-моему, это удобная штука: хочешь расширить класс - просто добавил сюда нужный класс для поиска и класс, который должен быть вызван. А если создавать обработчик под каждый плагин и создавать еще файл для этого... слишком геморно плюс лишние файлы вызываются каждый раз (если много плагинов), хотелось бы реализовать как-нибудь единый файлик, чтобы можно было удобно расширять классы. У кого есть идеи?