Kohana 3.2 - библиотека phpBB - работа с абстрактными методами - PullRequest
2 голосов
/ 09 января 2012

Я пытаюсь внедрить библиотеку 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.

1 Ответ

2 голосов
/ 10 января 2012

CI имеет другое имя класса.Все классы CI начинаются с CI_, в то время как Kohana не использует префиксы *.

Единственное решение, которое я могу придумать для вас, это реорганизовать класс сеанса Kohana (переименовать его везде) или сделать это с помощью phpBBбиблиотеки.Но ни один из них не идеален.


*) Просто для пояснения, Кохана использует Kohana_, но все их классы расширены классами без префиксов.

...