К сожалению, документация есть только для 3.0 Database Abstraction Layer , что для 3.1 неприменимо.
Как в 3.1 это реализовать? Какая там вообще схема в данном случае, как правильно построить работу?

Спасибо
Отправлено спустя 2 часа 19 минут 42 секунды:
В общем, немного погуглив, решение нашел, оставлю тут, вдруг кому пригодится. Ну и к гуру вопрос, нормальная ли это реализация?
Итак, services.yml выглядит примерно так:
Код: Выделить всё
services:
author.Extension.listener:
class: author\Extension\event\listener
arguments:
- @dbal.conn
- @request
- @config
- @user
- @dbal.conn2
- %core.root_path%
- %core.php_ext%
- %core.table_prefix%
tags:
- { name: event.listener }
dbal.conn2:
class: %dbal.driver.class%
Собтвенно, ко всяким разным классами/переменным, используемым в сервисе listener, добавляем еще один сервис dbal.conn2 с классом %dbal.driver.class% (в моем случае значение этой переменной, кажется, \phpbb\db\driver\mysqli) Ну и потом этот сервис в виде аргумента перетается в "основной" сервис расширения listener.
Как я понимаю, можно было бы и не морочиться с этим дополнительным сервисом, а просто создать элемент класса %dbal.driver.class% сразу в listener. Или я не прав?
Далее конуструктор класса listener выглядит так
Код: Выделить всё
public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\request\request_interface $request, \phpbb\config\config $config, \phpbb\user $user,\phpbb\db\driver\driver_interface $db2, $root_path, $php_ext, $table_prefix)
{
$this->db = $db;
$this->request = $request;
$this->config = $config;
$this->user = $user;
$this->db2 = $db2;
$this->root_path = $root_path;
$this->php_ext = $php_ext;
$this->table_prefix = $table_prefix;
}
В таком подходе может возникнуть проблема, если тип сторонней базы или интерфейс подключения к ней отличен от phpbb-шного (т.е. в данном случае не mysqli) - но тогда, как я понимаю, можно было бы просто создать экзепляр нужного класса прямо в listener.
Да, ссылка, которая помогла: https://www.phpbb.com/community/viewtop ... &t=2248926