php - Slim 之外的 Slim 框架配置

标签 php configuration 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'
]);

并像这样注入(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/

相关文章:

php - 如何从varchar类型的列中选取最新的数据

git fatal error : Unsupported SSL backend 'schannel'

networking - 在 mongodb 中获取更改文档的通知

c# - 在 Mac 上从命令行运行 ASP.NET 5 应用程序时是否使用 launchSettings.json?

PHP Slim Framework v3 - 为响应设置全局内容类型

php - 数据库之间的重复值

php - 使用 sftp 和 ssh2 的 fopen 段错误

php - 一个对象json中的三个查询mysql

php - 如何让这个 session 进入另一个.php?edit<?php echo $result->id;?>

php - Slim 忽略 try catch block