обернув инициализацию в какой нить Bootstrap или App::run() с внесением зависимостейПока не придумал, как это красиво сделать. Была бы одна точка входа, тогда ладно, передал бы в один единственных базовый контроллер эти данные и всё.
sayAction(), showTopicAction()
Смотрел по популярным фреймворкам, и так и эдак используют. В каком-то вообще без слова action, так и пишут say(), showTopic().
Я бы обернул выхлоп контроллера в сервис шаблонизацииПо сути так и есть. В качестве DI контейнера используется Pimple, для вывода страниц шаблонизатор в контейнере расширяется и заполняется данными хэдера и футера:
$container->extend('twig', function ($twig, $c) {
$data = ($this->headerData() + $this->footerData());
foreach ($data as $key => $value) {
$twig->addGlobal($key, $value);
}
return $twig;
});То есть на каждый Action создается свой класс-контроллер с одним методом?
Нет, контроллер один на главной странице модуля, а уже на других страницах вызывается нужное действие. Это для тех страниц, которые не были связаны с index.php от модуля.
Там же некоторые страницы обрабатывались так:
require_once '../incfiles/head.php';
$actions = ['new', 'who', 'adfile', 'file', ...];
if (in_array($act, $actions)) {
require_once ($act . '.php');
require_once '../incfiles/end.php';
exit;
}а некоторые как самостоятельные страницы были. Вот для них такой подход, чтобы ничего не ломать.