PHPixieによる柔軟な構成

画像

開発中、多くの場合、一度に複数の環境をサポートする必要があります:開発、ステージング。 生産など、設定がまったく異なる場合があります。 最も単純な例は、データベースに接続するためのパラメーターですが、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); 

Source: https://habr.com/ru/post/J301152/


All Articles