FuelPHPを使って開発する時に最初にやったこと
photo credit: Great Beyond via photopin cc
最近社内でインフルエンザよりもFuelPHPが流行っています。 FuelPHPを使ってみて、感じたのは ※CakePHPしか使った事ないので、Cakeと比較してですが。
- 動作が速い。
- ドキュメントが少ない。
- フレームワークのコア部分の拡張が容易
- 構成がシンプルで見やすい
ドキュメントが少ないのが難点ですが、使いやすいフレームワークだと思います。
そこで、最初に行っておくと開発する時に少しだけ(個人的にですが)利便性が向上する方法を3点挙げます。 なお、バージョンは、php5.3.3&FuelPHP1.7.1です。
- 1.開発環境と本番環境の設定の切り分け
- 2.コアクラスの拡張
- 3.共通ロジックの読み込み
1.開発環境と本番環境の設定の切り分け
FuelPHPはデフォルトで本番環境と開発環境の接続先を切り替えが出来ます。 ただ、定数とかも開発環境と本番環境で分けたいことってありますよね。 そこで私は、下記の様に各環境に合わせて、自動で動的にファイルを読む込むようにしています。 まず、fuel/app/config/development/constant.phpというファイルを作ります。(ファイル名は任意のもので) ※development部分は、各環境に読み替えてください。
//fuel/app/config/development/constant.php //定数を列挙 define('HOGE','FOO'); ・ ・
fuel/app/bootstrap.phpの最後で.下記の様に読み込みます。 Fuel::$envに環境名が入っているので、環境に合わせたファイルが読み込んでくれます。
//fuel/app/bootstrap.php require APPPATH.'/config/'. Fuel::$env . '/constant.php' ;
2.コアクラスの拡張
とりあえず、コアクラスのControlerとViewとvalidation ちなみに私がやってるのは、
- Controlerは、beforeでユーザ認証処理
- Viewは、拡張子をphpから変更してます。(なんとなくviewの拡張子は、phpだと気持ち悪いので)
- validationは、独自のValidateを追加を追記していく用です。
下記のようにコアクラスを継承したクラスを作る。 ※継承したクラスの場合は、namespaceは指定しないでよい。 するとうまく動かない
//fuel/app/vendor/validation/validation.php //ファイルの置き場所はどこでも好きなところで。 <?php class Validation extends Fuel\Core\Validation { //独自のValidationを追加する }
そして、bootstrap.phpのAutoloaderでクラスを登録する
Autoloader::add_classes(array( // Add classes you want to override here // Example: 'View' => APPPATH.'classes/view.php', 'View' => APPPATH.'vendor/view/view.php', 'Controller' => APPPATH.'vendor/controller.php', 'Controller_Rest' => APPPATH.'vendor/controller/rest.php', 'Controller_Template' => APPPATH.'vendor/controller/template.php', 'Controller_Hybrid' => APPPATH.'vendor/controller/hybrid.php', 'Validation' => APPPATH.'vendor/validation/validation.php', ));
3.共通ロジックの読み込み
デフォルトでfuel/app/classes/配下のクラスは認識しますが、 共通ロジックは場所を分けたかったので、別のところを読み込むようにしています。 まずは、bootstrap.phpで Autoloaderでnamespaceを追加します。
//fuel/app/bootstrap.php Autoloader::add_namespace('Util', APPPATH.'vendor/util/');
これでfuel/app/vendor/util配下のソースが認識するようになります。 例えば、HogeクラスのgetFooメソッドであれば、「Util\Hoge::getFoo();」と呼び出します。 すっきりしていいですよね ※クラスを作る時は、namespaceにUtilを指定する必要がある。
//fuel/app/vendor/util/hoge.php <?php namespace Util; class Hoge { public static function getFoo(){ return 'Foo!!'; } }
他にも色々ありますが、とりあえず最初にさくっとこれだけ仕込んどいてから開発するようにしてます。