Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

OpenCart + phpbb, контекст, одинаковые классы, пространство имен


Recommended Posts

Всем доброго времени суток.

 

Прошу о помощи. Решил сделать набор модулей для интеграции phpbb в OpenCart . Началось все с того, что возникла необходимость объединить регистрацию/авторизацию на PHPBB и OpenCart, но как оказалось простого добавления записей В БД было мало, загорелся и захотел написать еще пару модулей для интеграции phpbb в OpenCart (не наоборот). 

 

Вот тут-то и возникла первая проблема. Я, конечно, могу выполнять запросы напрямую к БД и выдергивать нужные данные, но это не то. Нужно, чтобы скрипт имел доступ ко всем классам и выполнялся в контексте движка, дабы использовать все возможности phpbb.

 

Тут видел 2 варианта - создать дубликаты незаменимых классов phpbb и использовать их в OpenCart, либо запустить phpbb в контексте OpenCart и получать данные напрямую у phpbb. Первый вариант отпал сразу как я увидел внутренности в phpbb, мне бы пришлось создавать дубликаты классов почти всего движка. С вторым вариантом мне помогли (спасибо rxu):

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'd:/php/home/phpbb.im/forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/functions_url_matcher.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');
var_dump($user); //проверено, работает, выводит то что нужно

Этот код (аналог index.php в OpenCart) инициализирует phpbb и все классы, которые понадобятся для его полноценной работы -> для получения данных из классов phpbb. Т.е. после инициализации в контроллере модуля можно было бы в написать:

$this->data['username'] = $user->data['username'];

Но проблема в том, что инициализация phpbb выполняется в контексте (в контроллере) OpenCart и как следствие - ошибки из-за одинаковых названий классов - request, cache и т.д. в этот список входят все основные классы OpenCart.

 

Нашел статью по пространствам имен в PHP, но там:

 

В PHP нельзя импортировать сразу несколько классов из-за особенности работы языка. Если Java может легко узнать какие классы находятся в пакете (namespace), то PHP так не может, там все динамически и заранее какие классы находятся в namespace'e узнать невозможно. Да и namespace в PHP это как макросы, все названия классов раскрываются на этапе трансляции в байткод, а не во время выполнения.

 

Что можно сделать в такой ситуации? Можно, конечно, написать свой мод для phpbb и запилить JSON API, но это не вариант. 

Змінено користувачем halfhope
Надіслати
Поділитися на інших сайтах

В PHP когда классы одинаковые (имена классов) ничего не сделаешь

Можно сушить весла или клепать костыли

Надіслати
Поділитися на інших сайтах

В PHP когда классы одинаковые (имена классов) ничего не сделаешь

Можно сушить весла или клепать костыли

 

Спасибо. Понимал в душе, что до практики дело не дойдет, только теория. Подожду еще мнений, а пока в лодке посижу)

Надіслати
Поділитися на інших сайтах

Прошу о помощи. Решил сделать набор модулей для интеграции phpbb в OpenCart. Началось все с того, что возникла необходимость объединить регистрацию/авторизацию на PHPBB и OpenCart, но как оказалось простого добавления записей В БД было мало

Вообще-то у PhpBB предусмотрена возможность отдавать аутентификацию на сторону, другому приложению (в нашем случае Opencart-у) https://wiki.phpbb.com/Authentication_plugins
Надіслати
Поділитися на інших сайтах


Вообще-то у PhpBB предусмотрена возможность отдавать аутентификацию на сторону, другому приложению (в нашем случае Opencart-у) https://wiki.phpbb.com/Authentication_plugins

 

Это понятно, с авторизацией разобрался вдоль и поперек. Мне нужна эмуляция прав phpbb, пользователей, сессий и т.д., чтобы получать список постов и т.д. это можно сделать только получив доступ к классам phpbb, что я и пытался сделать.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.