
開発中、多くの場合、一度に複数の環境をサポートする必要があります:開発、ステージング。 生産など、設定がまったく異なる場合があります。 最も単純な例は、データベースに接続するためのパラメーターですが、1つのパラメーターだけでなく、セクション全体(ログの記録やキャッシュのバックエンドなど)を変更したい場合もあります。 さらに、さまざまなCMSを開発するときに、ユーザーが見つけやすいように、一部の設定を表示したい場合があります。 これらの問題がPHPixieでどのように解決されるかを見てみましょう。 そしてもちろん、これらはすべてフレームワーク自体がなくても機能し、 symfony / configパッケージよりはるかに簡単です。
パラメータ
できる最も簡単なことは、後で設定で使用できるいくつかの変数を作成することです。このために、ファイル/assets/parameters.phpを作成します。
<?php // /assets/parameters.php return [ 'apiToken' => 'jdf73jdhgj', // 'database' => [ 'connection' => 'mysql:host=localhost;dbname=quickstart', 'user' => 'root', 'password' => 'secret' ] ];
%name%を使用して、構成ファイルでそれらを使用できるようになりました。次に例を示します。
<?php // /assets/config/database.php return [ 'default' => [ 'driver' => 'pdo', 'connection' => '%database.connection%', 'user' => '%database.user%', 'password' => '%database.password%' ] ];
その結果、変数自体を使用場所から分離します。 parameters.phpを.gitignoreに追加すると、githubでコードを自由に共有できます。
しかし、さらに必要な場合はどうでしょうか? たとえば、開発者とのみ機能し、本番環境では無効になっているルートをいくつか追加しますか? このためには、オーバーレイが必要です。
オーバーレイ
構成の1つで、データベースをMongoDBに接続するとします。 これを行うには、 ローカルなどの美しい名前でフォルダーを作成し、そこにローカルの変更を追加します。
<?php // /assets/config/local/database.php return [ // // 'default' . // array_replace_recursive() 'mongo' => [ 'driver' => 'mongo', 'database' => '%mongo.database%', 'user' => '%mongo.user%', 'password' => '%mongo.password%', ] ];
変更がほとんどない場合、フォルダーを作成することもできず、すべてを1つのファイルに入れるだけです。
<?php // /assets/config/local.php return [ 'database' => [ // // , // 'default' 'mongo' => [ 'driver' => 'mongo', 'database' => '%mongo.database%', 'user' => '%mongo.user%', 'password' => '%mongo.password%', ] ] ];
オンにするだけです。これのためにparameters.phpに 1行追加します 。
<?php // /assets/parameters.php return [ 'configOverlay' => 'local', // ... ];
もちろん、このようなオーバーレイをいくつか作成して、好きなように切り替えることができます。
結果を見るには?
デバッグ用:
print_r($frameworkBuilder->configuration()->config()->get());
フレームワークなしで使用する
SliceおよびConfigベースライブラリに追加されたすべての機能。 構成を作成するときに、パラメーターのロード元となる別の構成またはスライスを指定できます。
$configBuilder = new \PHPixie\Config(); $parameterStorage = $configBuilder->file('parameters.php'); $rootDir = ...; // ( ) $dirName = 'config'; // $configuration = $configBuilder->directory($rootDir, $dirName, 'php', $parameterStorage);
オーバーレイはさらに簡単です;実際、2つのSliceインスタンスまたは構成を1つにマージできます。 同時に、遅延ファイルのアップロードは引き続き正常に機能します。
$sliceBuilder = new \PHPixie\Slice(); $configBuilder = new \PHPixie\Config(); $configuration = $configBuilder->file('config.php'); $overlay = $configBuilder->file('overlay.php'); $merged = $sliceBuilder->mergeData($configuration, $overlay);