Slim 之外的 Slim 框架配置

Ale*_*ett 5 php configuration slim

我的 Slim 项目组织如下:

- app
-- Acme
--- Auth
---- Auth.php (handles authentication)
-- config
--- development.php
--- production.php
-- routes
-- views
- public
- vendor
Run Code Online (Sandbox Code Playgroud)

我正在以通常的方式设置我的应用程序。

$app = new \Slim\Slim([
    'view' => new \Slim\Views\Twig(),
    'mode' => 'development'
]);
Run Code Online (Sandbox Code Playgroud)

并注入这样的依赖项。

$app->auth = function($app) {
    return new Codecourse\Auth\Auth($app->user);
};
Run Code Online (Sandbox Code Playgroud)

允许我的 Auth 类查看我的配置的最正确方法是什么?我原本打算将它作为依赖项传递,但是 Slim 的配置键是这样访问的,$app->config('key')所以我必须传递它$app,这会很糟糕。

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

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

Mar*_*jak 2

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

但是当然,您始终可以拥有一个单独的配置对象(例如 noodlehaus/config 包中的配置对象)并使用它来代替 Slim 的内置资源定位器功能……这样您就可以访问它,而无需实例化任何 Slim 应用程序对象,并且让Auth库独立于 Slim 框架。