我的 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'
]);
并像这样注入(inject)依赖。
$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 之外的配置会更好吗?
最佳答案
实例化Slim\Slim
后,您可以通过静态方法访问它的实例Slim\Slim::getInstance()
从任何地方(例如在你的 Auth
类中)然后使用 config('key')
方法访问它的任何配置属性(即你可以使用 Slim 作为资源定位器从任何地方到 get/set really any of the active instance's resources)。这样就不需要传递应用程序对象。
但是当然你总是可以有一个单独的配置对象(比如来自 noodlehaus/config 包的那个)并使用它来代替 Slim 的内置资源定位器功能......这样你就可以访问它而无需实例化任何 Slim应用程序对象并使 Auth
库独立于 Slim 框架。
关于php - Slim 之外的 Slim 框架配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881367/