Slim 之外的 Slim 框架配置


Slim framework configuration outside of Slim

My 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);
};

允许我的身份验证类查看我的配置的最正确方法是什么?我最初打算将其作为依赖项传入,但是 Slim 的配置键像$app->config('key')一样被访问,所以我必须传入$app,这会很糟糕。

我知道我的身份验证可以用作中间件,但希望能够全局访问配置。

使用像noodlehaus/config(https://github.com/noodlehaus/config)这样的软件包来处理Slim之外的配置会更好吗?

实例化Slim'Slim后,您可以通过静态方法Slim'Slim::getInstance()从任何地方(例如在Auth类内部)访问其实例,然后使用 config('key') 方法访问其任何配置属性(即您可以使用 Slim 作为资源定位器,从任何地方获取/设置活动实例的任何资源)。这样就不需要传递应用程序对象。

但是,当然,您始终可以拥有一个单独的配置对象(例如面馆/配置包中的那个)并使用它而不是Slim的内置资源定位器功能...这样,您可以在不实例化任何 Slim 应用程序对象的情况下访问它,并使Auth库独立于 Slim 框架。