https://www.slimframework.com/docs/
の中から「The Application」をざっくりと見て、興味深いところをメモ。
https://www.slimframework.com/docs/v3/objects/application.html
$config = [ 'settings' => [ 'displayErrorDetails' => true, 'logger' => [ 'name' => 'slim-app', 'level' => Monolog\Logger::DEBUG, 'path' => __DIR__ . '/../logs/app.log', ], ], ]; $app = new \Slim\App($config);
settingはスケルトンで見たので知ってる〜。
ただ
Updating Settings
$settings = $container->get('settings'); $settings->replace([ 'displayErrorDetails' => true, 'determineRouteBeforeAppMiddleware' => true, 'debug' => true ]); ]);
は、なるほどふむり、興味深い。
……ただ、ってことは「Slimのデフォの値を把握してなきゃなんない」よねぇって思ったら Slim Default Settings がある、ので、ざっくりと備忘録的に。
httpVersion
まぁそのまんまだよねぇ。デフォ1.1。いつか2.0になるのかねぇ???
responseChunkSize
いわゆる「送りつける1塊のサイズ」。この辺、あんまりPHPだと意識していないような気がするんだけど、意識するとなにか変わるのかしらん?
デフォは4096バイト。
outputBuffering
出力バッファリングの有無。
fasleで「バッファリングしない」、appendで「後ろにつける」、prependで「前につける」、のいずれか。……それ以外の値の時ってどうなるんだろうねぇ?
デフォはappend。まぁデフォでいいと思うなぁ。
単純なtrue(出力バッファリングだけする)とか欲しいような気もしたけど、それ、appendになるわ。
determineRouteBeforeAppMiddleware
長いw
「trueの場合、ミドルウェアが実行される前にルートが計算されます。(機械翻訳)」………ふむ、なんかグっと来ない感じ。
デフォはfalseなので、あんまり使わないかしらん?
displayErrorDetails
「trueの場合、例外に関する追加情報がデフォルトのエラーハンドラによって表示されます。(機械翻訳)」で、デフォがfalse。
ふむ……開発環境でtrueにしておくと旨味があるのかしらん?
addContentLengthHeader
Content-Length付与の有無。デフォはtrueだし、まぁここはtrueのままでいいんじゃないかなぁ?
routerCacheFile
ルートファイルのキャッシュの有無で、デフォルトはfalse(キャッシュしない)。
……キャッシュの仕組みがよっぽどわかればともかく、それ以外だと、あんまりグっと来ないかなぁ。
設定したくなりそうなのはdisplayErrorDetailsくらいかしらん?
………あれ?
上にある「debug」ってなんじゃらほい?
grepしてみたけど、グっとくる情報がないなぁ。slim_test_plain(Slimしか入れてない環境)だと、引っかかってこないし。
とりあえず「一旦、デフォでは存在しない」って認識でOKかしらん。
あと。
$settings->replace()、スケルトンのほうだと使ってないのだよねぇ……軽く確認。
public function __construct(array $values = []) { parent::__construct($values); $userSettings = isset($values['settings']) ? $values['settings'] : []; $this->registerDefaultServices($userSettings); }
private function registerDefaultServices($userSettings) { $defaultSettings = $this->defaultSettings; /** * This service MUST return an array or an * instance of \ArrayAccess. * * @return array|\ArrayAccess */ $this['settings'] = function () use ($userSettings, $defaultSettings) { return new Collection(array_merge($defaultSettings, $userSettings)); }; $defaultProvider = new DefaultServicesProvider(); $defaultProvider->register($this); }
ふむ、array_mergeがポイントか。
array_mergeは後だし有効だったはずだから………userSettingsが上書き。
なので「明示的にコンストラクタに渡して設定したらそっちが有効になる」なぁ。
ってことは、index.php付近での「初期設定」の時は「値を渡しておけば問答無用でそっち」になるぽ。
$settings->replace()は、とりあえず「使わない」かなぁ。この状態だと。
割とシンプルに調査終了。