【问题标题】:Slim framework configuration outside of SlimSlim 之外的 Slim 框架配置
【发布时间】:2015-01-10 21:25:52
【问题描述】:

我的 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 之外的配置会更好吗?

【问题讨论】:

  • 您的身份验证器需要从配置中得到什么?

标签: php configuration slim


【解决方案1】:

实例化Slim\Slim 后,您可以从任何地方(例如在您的Auth 类中)通过静态方法Slim\Slim::getInstance() 访问其实例,然后使用config('key') 方法访问其任何配置属性(即您可以使用 Slim 作为资源定位器从任何地方到get/set really any of the active instance's resources)。这样就不需要传递应用程序对象了。

当然,你总是可以拥有一个单独的配置对象(比如 noodlehaus/config 包中的那个)并使用它来代替 Slim 的内置资源定位器功能......这样你就可以在不实例化任何 Slim 的情况下访问它应用程序对象,并让Auth 库独立于 Slim 框架。

【讨论】:

  • 我完全错过了这一点,感谢您指出这一点。最后,我采用了使用该包的全局配置,但这将派上用场以供将来参考。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
相关资源
最近更新 更多