Тонкая конфигурация каркаса снаружи Slim

Мой Slim проект организован следующим образом:

- app
-- Acme
--- Auth
---- Auth.php (handles authentication)
-- config
--- development.php
--- production.php
-- routes
-- views
- public
- vendor

Я настраиваю свое приложение обычным способом.

$app = new \Slim\Slim([
'view' => new \Slim\Views\Twig(),
'mode' => 'development'
]);

И вводить такие зависимости, как это.

$app->auth = function($app) {
return new Codecourse\Auth\Auth($app->user);
};

Какой самый правильный способ разрешить моему классу Auth видеть мою конфигурацию? Первоначально я собирался передать его в качестве зависимости, но ключи конфигурации Slim доступны как $app->config('key') так что я должен был бы пройти в $app, что было бы плохо.

Я знаю, что моя аутентификация могла бы служить промежуточным программным обеспечением, но я хотел бы иметь доступ к конфигурации во всем мире.

Возможно, было бы лучше использовать пакет, такой как noodlehaus / config (https://github.com/noodlehaus/config) Обрабатывать конфигурацию снаружи Slim?

4

Решение

После того, как вы создали Slim\Slim вы можете получить доступ к его экземплярам через статический метод Slim\Slim::getInstance() откуда угодно (например, внутри вашего Auth класс), а затем получить доступ к любому из его свойств конфигурации с помощью config('key') метод (т.е. вы можете использовать Slim в качестве локатора ресурсов для получить / установить действительно любой из ресурсов активного экземпляра откуда угодно). И таким образом нет необходимости передавать объект приложения.

Но, конечно, вы всегда можете иметь отдельный объект конфигурации (например, объект из пакета noodlehaus / config) и использовать его вместо встроенной функции поиска ресурсов Slim … таким образом, вы можете получить к нему доступ без создания каких-либо объектов приложения Slim и иметь Auth библиотека должна быть независимой от основы Slim.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector