Slim Framework (PHP) は初めてです。私はチュートリアルを進め、いくつかのコードをテストしていましたが、次のことを試しました。
$app=new App([
'mode'=>file_get_contents(INC_ROOT . '/mode.php')
]);
echo $app->config('mode');
出力は空白でした。
機能config()
はV2で動くようですが、私はV3を使用しています。私は何を間違っていますか?
Slim Framework (PHP) は初めてです。私はチュートリアルを進め、いくつかのコードをテストしていましたが、次のことを試しました。
$app=new App([
'mode'=>file_get_contents(INC_ROOT . '/mode.php')
]);
echo $app->config('mode');
出力は空白でした。
機能config()
はV2で動くようですが、私はV3を使用しています。私は何を間違っていますか?
Slim 3 にはconfig
メソッドがありません。代わりに、依存性注入コンテナーを介して構成設定を追加する必要があります。
$app = new \Slim\App([
'settings' => [
'mode' => true
]
]);
$container = $app->getContainer();
echo $container->get('settings')['mode'];
Slim 3 は、設定を通じて異なるバージョンの構成設定を管理しなくなりましたmode
。したがって、ここで説明したように、設定変数と呼ばれる値を設定できますが、mode
実際には何もしません (つまり、Slim はそれを使用して環境を判断しません)。
別の方法として、 userfrosting/Configをチェックアウトできます。これは、複数のディレクトリとさまざまな環境構成ファイルを検索して、それらの内容をマージできるライブラリです。
/path/to/config/default.php
return [
'contacts' => [
'housekeeper' => [
'name' => 'Alex',
'email' => 'alex@cleansthetoilet.com'
]
]
];
/path/to/config/production.php
return [
'contacts' => [
'housekeeper' => [
'email' => 'alex@istheboss.com'
]
],
'database' => [
'password' => 'sup3rC-cr3t'
]
];
index.php
$app = new \Slim\App();
$container = $app->getContainer();
// Site config object (separate from Slim settings)
$container['config'] = function ($c) {
// Create and inject new config item
$config = new \UserFrosting\Config\Config();
$config->setPaths([
'/path/to/config'
]);
$config->loadConfigurationFiles('production');
return $config;
};
development.php
これにより、 の設定が の設定と再帰的にマージされ、default.php
必要に応じて同じ名前とスコープで設定が更新されます。
ランニングprint_r($container['config']);
リターン:
[
'contacts' => [
'housekeeper' => [
'name' => 'Alex',
'email' => 'alex@istheboss.com'
]
],
'database' => [
'password' => 'sup3rC-cr3t'
]
]
の値がcontacts.housekeeper.email
に更新され'alex@istheboss.com'
、database
構成情報がマージされていることに注意してください。ちなみに、より便利な「ドット構文」を使用して構成設定にアクセスすることもできます。
$config = $container->get('config');
echo $config['contacts.housekeeper.email'];
// Easier to type instead of $config['contacts']['housekeeper']['email'];
配列config
を使用するのではなく、これを別のサービスとして Slim に挿入することをお勧めします。settings
これをphpdotenvと組み合わせて、システム環境または.env
作成したファイルから設定をロードできます。
/path/to/config/production.php
return [
'database' => [
'password' => getenv('DB_PASSWORD')
]
];