Написание модулей для 1С Битрикс на Yii фреймворке

1С Битрикс и Yii фреймворк не могут работать одновременно, т.к. разработчики обоих платформ используюn префикс "C" для именования классов, поэтому требуется модифицировать Yii фреймворк.

Нужно произвести следующую замену строк по всем файлам фреймворка и приложения:

CEvent -> YiiEvent
CApplication -> YiiApplication
CModule -> YiiModule,
CComponent -> YiiComponent

И переименовать следующие файлы:

framework/base/CApplication -> YiiApplication
framework/base/CModule -> YiiModule
framework/base/CComponent -> YiiComponent

Вторая проблема совместимости этих платформ в том, что обе используют php5 автозагрузку классов, и после подключения Yii фреймворка, Битрикс перестает находить свои файлы. Автозагрузка классов в битриксе делается через CModule::RequireAutoloadClass($className), добавим этот загрузчик к фреймоворку:

function __autoload($className)
{
    CModule::RequireAutoloadClass($className);
}

define("NO_BITRIX_AUTOLOAD", FALSE); //Про эту строчку точно не помню, нужно-ли...

spl_autoload_unregister(array('YiiBase','autoload'));
spl_autoload_register('__autoload');
spl_autoload_register(array('YiiBase','autoload'));

PS: Код использовался достаточно давно, и с новыми версиями обеих платформ, возможно, потребуется еще что-то дорабатывать.

comments powered by HyperComments