使用 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 内部设置(即 httpVersion
、responseChunkSize
、 outputBuffering
, determineRouteBeforeAppMiddleware
, displayErrorDetails
, addContentLengthHeader
, routerCacheFile
)?
获取所有设置只需像这样调用 get()
方法:
$settings = $container->get('settings');
以下三种方式效果相同。应该使用哪种方法?有什么时候应该用一个代替另一个吗?
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 内部设置(即 httpVersion
、responseChunkSize
、 outputBuffering
, determineRouteBeforeAppMiddleware
, displayErrorDetails
, addContentLengthHeader
, routerCacheFile
)?
获取所有设置只需像这样调用 get()
方法:
$settings = $container->get('settings');