CakePHP3でYAMLの設定ファイルを読み込み

スポンサーリンク

CakePHP 3 で Twitter や Facebook などの API キーを YAML ファイルに記載して、それをロードしたいケースがあった。モダンなフレームワークのはずなので、デフォルトで YAML パーサーのライブラリ入ってないかな〜と探したら、symfony/yaml が入っていたのでそれを使いました。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

— 環境 —
CakePHP 3.1.1
PHP 5.5.19

Twitter や Facebook などの API キーを設定

まず、各種 API キーなどの情報を config/secrets.yml を作成して YAML の設定ファイルとして書いた。

config/secrets.yml

この手のシークレットにしておきたい情報は、CakePHP3 の場合どこに書くのが定石でしょうかね?… ちょっと検索しても分からなかったので、Rails を真似ました。

API キーなどはリモートのリポジトリに置きたくないので config/secrets.yml を .gitignore に追加。

.gitignore

symfony/yaml で YAML 設定をロードして取得

続いて、アプリケーション側で YAML の設定ファイルを読み込む。CakePHP 3 はデフォルトで YAML パーサーのライブラリが入ってるんじゃないかと考えまして、vendor ディレクトリを “yaml” で grep したところ、symfony/yaml が入っていた。その README を読んでコードを console で試したのが以下。

YAML に書いた設定を PHP の配列として取得できました。

config/bootstrap.php 内で secrets.yml の設定を読み込む

もう一歩進めて実際にアプリケーション内で使うために、config/bootstrap.php で secrets.yml を読み込み、CakePHP アプリケーション初期化時に Configure に設定するようにしました。以下を config/bootstrap.php に追記。

config/bootstrap.php

コントローラーやコンポーネントで使う時は、以下のようにする。

以上です。CakePHP 3 だと、YAML のパースには symfony/yaml を使うのがお手軽です。もっと良い方法があればぜひご教授お願いいたします!

【追記 2015/11/24】
nojimage さんに、コメントで便利なライブラリを教えて頂きました。ありがとうございました!
guemidiborhane/Cake-Yaml
https://github.com/guemidiborhane/Cake-Yaml
【追記ここまで】

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク
  • 2件のコメント
  • nojimage

    guemidiborhane/Cake-Yaml https://github.com/guemidiborhane/Cake-Yaml

    を使うとよいですよ。

    Configure::load(‘foo’, ‘yaml’); で config/foo.ymlをパースしてConfigure::readで取り出せる形にしてくれます。

    • taka

      便利なライブラリを教えて頂きありがとうございます!
      これを使ったほうが遥かに楽そうですね。

Leave Your Message!