使用 slim 的 Container::get('settings') 与直接访问数组

Using slim's Container::get('settings') versus accessing array directly

以下三种方式效果相同。应该使用哪种方法?有什么时候应该用一个代替另一个吗?

function getConfig() {
    $config=parse_ini_file(__DIR__.'/../config.ini',true);
    $config['directories']['base']=dirname(__DIR__);
    return $config;
}
$c = new \Slim\Container(['settings' => [
    'displayErrorDetails'=>true,
    'addContentLengthHeader'=>false,
    'determineRouteBeforeAppMiddleware'=>true,
    'config'=>getConfig()
]]);

$config=getConfig();
$c['pdo'] = function ($c) use($config){
    $db1 = $c['settings']['config']['mysql'];
    $db2 = $c->get('settings')['config']['mysql'];
    $db3 = $config['mysql'];
    return new \PDO(/* ... */);
};

旁注。是否建议对任何应用程序设置使用单独的设置 属性,就像我对 "config" 所做的那样,以减少与 Slim 内部设置(即 httpVersionresponseChunkSizeoutputBuffering, determineRouteBeforeAppMiddleware, displayErrorDetails, addContentLengthHeader, routerCacheFile)?

获取所有设置只需像这样调用 get() 方法:

$settings = $container->get('settings');