Я пытаюсь внедрить библиотеку phpBB в Kohana.
Я создал папку vendor в своем модуле, загружаю библиотеку и инициализирую ее:
require_once Kohana::find_file('vendor/phpbb_library', 'phpbb_library');
$phpbb = new Phpbb_library();
Однако, как только библиотека попытается включить файлы phpBB:
// Include needed files
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'config.' . $phpEx);
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
Затем я получаю следующую ошибку:
ErrorException [ Fatal Error ]: Class user contains 5 abstract methods and must therefore be declared abstract or implement the remaining methods (Kohana_Session::_read, Kohana_Session::_regenerate, Kohana_Session::_write, ...)
Теперь включенные файлы - это файлы, используемые phpBB, так что, очевидно, я не могу просто изменить их.
Решено 01.02.2012
Следуя решению, предложенному Michal M Я создал свои собственные версии класса сеанса Kohana и сохранил их в модуле. Файлы, которые мне пришлось скопировать, переименовать и отредактировать, были:
/system/classes/session.php
/system/classes/session/cookie.php
/system/classes/session/exception.php
/system/classes/session/native.php
/system/classes/kohana/session.php
/system/classes/kohana/session/cookie.php
/system/classes/kohana/session/exception.php
/system/classes/kohana/session/native.php
Во всех файлах основные изменения включали изменение имен классов Session
на MySiteSession
и Kohana_Session
на Kohana_MySite_Session
. Хотя в файлах /system/classes/kohana
было несколько применений переменных, которые также требовали изменения имени.
Теперь, чтобы использовать сеанс, я просто вызываю MySiteSession::instance()
.
PHPBB теперь работает как включение, так как я больше не использую класс Session.