PHPのフレームワークやライブラリを使っていると、色々なフォーマットの設定ファイルが登場する。
各種のファイルを自分で読む場合も簡単にできてしまう。
CodeIgniterなんかで使われていて、結構スタンダードなパターンとも言える。
config.php
これを単純に require することによって $config変数を取り込む。
ただし、これだと読み込む側で変数名を制御できないので、読み込む側で変数名を決めたい場合は、設定ファイルから無名のオブジェクトをreturnするようにする。
読み込む側はrequireの戻りを変数に格納する。
config.php
元々、クライアントサイドとのやり取りでJSON形式はよく使われるため、PHPの標準で関数が用意されている。
http://php.net/manual/ja/ref.json.php
file_get_contentsを使って、ファイル全体を読み込んだ文字列をjson_decodeに渡すことによってオブジェクトを生成してくれる。
config.json
http://php.net/manual/ja/book.yaml.php
なので、SymfonyのYamlコンポーネントを使った方が手軽にできる。
https://symfony.com/doc/current/components/yaml.html
composerを使ったインストールは以下の通り。
JSONの時とほとんど同じで、ファイル読み込んで、文字列をパーサーに渡す。
config.yml
https://ne-on.org
https://github.com/nette/neon
パッと見はyamlに似ているけど、Entityが使えるのが特徴らしい。
こんな感じの。
entity: Column(type=int, nulls=yes)
これもcomposerでインストール。
config.neon
NEONはまだ新しい記法のようだけど、応用もありそうなので、もうちょっと突っ込んで調べてみたい。
各種のファイルを自分で読む場合も簡単にできてしまう。
PHP
設定ファイルもPHPファイルそのまんま。CodeIgniterなんかで使われていて、結構スタンダードなパターンとも言える。
config.php
<?php $config['language'] = 'japanese';
これを単純に require することによって $config変数を取り込む。
require_once 'config.php'; var_dump($config); // array(1) { // ["language"]=> // string(8) "japanese" // }
ただし、これだと読み込む側で変数名を制御できないので、読み込む側で変数名を決めたい場合は、設定ファイルから無名のオブジェクトをreturnするようにする。
読み込む側はrequireの戻りを変数に格納する。
config.php
<?php return [ 'language' => 'japanese' ];
$cfg = require_once 'config.php'; var_dump($cfg); // array(1) { // ["language"]=> // string(8) "japanese" // }
JSON
JSONはComposerで設定ファイルとして使われている。元々、クライアントサイドとのやり取りでJSON形式はよく使われるため、PHPの標準で関数が用意されている。
http://php.net/manual/ja/ref.json.php
file_get_contentsを使って、ファイル全体を読み込んだ文字列をjson_decodeに渡すことによってオブジェクトを生成してくれる。
config.json
{ "language" : "japanese" }
$json_config = json_decode(file_get_contents('config.json')); var_dump($json_config); // object(stdClass)#1 (1) { // ["language"]=> // string(8) "japanese" // }
YAML
YAMLのパーサーはPHPの拡張モジュールがあるけど、追加でインストールをする必要があり、ちょっと面倒。http://php.net/manual/ja/book.yaml.php
なので、SymfonyのYamlコンポーネントを使った方が手軽にできる。
https://symfony.com/doc/current/components/yaml.html
composerを使ったインストールは以下の通り。
$ composer require symfony/yaml
JSONの時とほとんど同じで、ファイル読み込んで、文字列をパーサーに渡す。
config.yml
config: language: japanese
require_once 'vendor/autoload.php'; use Symfony\Component\Yaml\Yaml; $yaml_config = Yaml::parse(file_get_contents('config.yml')); var_dump($yaml_config); // array(1) { // ["config"]=> // array(1) { // ["language"]=> // string(8) "japanese" // } // }
NEON
NEONはPHPStanで使われている。https://ne-on.org
https://github.com/nette/neon
パッと見はyamlに似ているけど、Entityが使えるのが特徴らしい。
こんな感じの。
entity: Column(type=int, nulls=yes)
これもcomposerでインストール。
$ composer require nette/neon
config.neon
config: language: japanese
require_once 'vendor/autoload.php'; use Nette\Neon\Neon; $neon_config = Neon::decode(file_get_contents('config.neon')); var_dump($neon_config); // array(1) { // ["config"]=> // array(1) { // ["language"]=> // string(8) "japanese" // } // }
NEONはまだ新しい記法のようだけど、応用もありそうなので、もうちょっと突っ込んで調べてみたい。
0 件のコメント:
コメントを投稿