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);
      
      






All Articles