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

Proxy Class Autoloader

Тема в разделе "Made in XF-Russia.ru", создана пользователем Yoskaldyr, 21 фев 2012.

Загрузка
Статус темы:
Закрыта.
  1. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1.921
    Симпатии:
    1.160
    Версия XF:
    1.0.4
    Во вложении минихак (даже не хак, а просто набор файлов), который может пригодиться разработчикам и админам, которым иногда приходится править оригинальные файлы.

    Установка:
    Залить и на форум и добавить в конфиг (config.php) строчку:
    PHP:
    Proxy_Autoloader::proxyInstance();
    После установки можно вместо правки оригинального файла (не важно файла форума или файла хака) достаточно просто скопировать оригинальный файл в папку Proxy по такому же пути как и оригинал и там его уже править - при загрузке класса будет использоваться файл в папке Proxy вместо оригинального пути.

    Например, надо исправить класс XenForo_ViewPublic_Helper_Message. Вместо редактирования файла Message.php по пути \library\XenForo\ViewPublic\Helper\ копируем его в папку \library\Proxy\XenForo\ViewPublic\Helper\ и редактируете скопированный файл. Ксенфоро будет использовать именно эту копию. Т.е. оригинальный файл остался без изменений, но ксенфоро работает с измененным файлом.

    Второй пример - разработка плагина. Есть живой сайт, где нет возможности забрать хак для локальной разработки, а любые ошибки для пользователей неприемлемы. Тогда достаточно просто скопировать все файлы плагина в папку Proxy а инициализацию в конфиге сделать таким образом (вместо 'developer_ip_address' поставить адрес разработчика):
    PHP:
    if ($_SERVER['REMOTE_ADDR'] == 'developer_ip_address'Proxy_Autoloader::proxyInstance();
    теперь только для ip разработчика будут новые (unstable) версии файлов которые в процессе разработки, а для всех остальных пользователей - старые (stable) версии.

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

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

    Вложение удалил, т.к. такой подход не стоит в хаках использовать - ибо зло.
    Кому надо стучитесь в личку.
     
    Suzen, FractalizeR, Romchik® и 4 другим нравится это.
  2. infis

    infis Местный Команда форума

    Регистрация:
    27.06.11
    Сообщения:
    5.525
    Симпатии:
    3.322
    Версия XF:
    1.5.9
    Супер!
     
  3. infis

    infis Местный Команда форума

    Регистрация:
    27.06.11
    Сообщения:
    5.525
    Симпатии:
    3.322
    Версия XF:
    1.5.9
    Понадобилось модифицировать для того, чтобы использовать в плагине. Для этого нужно модифицировать сам класс:
    PHP:
    /*удалено*/
    Тогда в конфиг нужно добавлять еще один массив. Таким образом вставляемый в конфиг код выглядит следующим образом:
    PHP:
    $config['proxy'] = array('Proxy','MyPlugin_Proxy');
    Proxy_Autoloader::proxyInstance();
    Соответственно, в папке своего плагина нужно создать папку Proxy. Ну а в папку уже копировать оригинальные файлы, как указано в первом посте.

    Нюанс: если будут два одних и тех же модифицированных файла (в папке library/Proxy/... и в library/MyPlugin_Proxy/...), то будет использоваться первый. Это обусловлено логикой загрузки классов по порядку в массиве $config['proxy'].

    Не знаю, может есть красивее вариант. Мне просто нужно было держать все, что относится к плагину, в папке плагина.
     
  4. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1.921
    Симпатии:
    1.160
    Версия XF:
    1.0.4
    У-у-у. НЕ НАДО ЭТОГО ДЕЛАТЬ!!!!!!!!! (сорри за капс, но это просто крик души!)
    Это только для личного использования и никак не для написания плагинов!!!!!!
    Вот именно поэтому выложил только здесь а не на оффсайте - ибо после этого качество многих хаков станет под очень большим вопросом (особенно в плане конфликтности хаков с новыми версиями форума)

    Большая просьба этот плагин в паблик не пускать ни под каким предлогом! Тоже самое и насчет Вашего собственного плагина использующего эту технологию.

    P.S. хак удалил из первого сообщения. Тему закрыл.
     
    guiltar нравится это.
  5. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1.921
    Симпатии:
    1.160
    Версия XF:
    1.0.4
    Сообщение infis-а подправил (удалил код плагина)
     
Статус темы:
Закрыта.

Поделиться этой страницей