time 2017/10/17
CakePHPでは、『App:import』を使用することで、パスを意識せずにクラスを読みこむことができます。
よく使う処理をまとめたクラスなどを『vendors』に入れておき、『App:import』で読み込んだりすると楽になるみたいです。
※マニュアルによると、「App::import()は次のことを保証します。クラスが1度しかロードされないこと。適切な親クラスがロードされること。そして数多のケースで自動的にパスを解決することです。『App::import』は、ファイルを『require』で読み込むことと同じです。その後にクラスを初期化する必要があるということを意識しておいてください。」らしいです。
当たり前といえば当たり前ですが、使用したい場合はインスタンス化を忘れないって事ですね。
コアライブラリ
App::import(‘Core’, ‘インポートしたいコアライブラリ名’)
コントローラ
App::import(‘Controller’, ‘インポートしたいコントローラー名’)
モデル
App::import(‘Model’, ‘インポートしたいモデル名’)
コンポーネント
App::import(‘Component’, ‘インポートしたいコンポーネント名’)
ビヘイビア
App::import(‘Behavior’, ‘インポートしたいビヘイビア名’)
ヘルパー
App::import(‘Helper’, ‘インポートしたいヘルパー名’)
プラグイン
プラグインについては、少し他とは違います。
マニュアルには、「プラグインのクラスを読み込むのは、appとコアのクラスを読み込むのとほぼ同じです。しかし、読み込み元のプラグイン名を指定してください。」とあります。
例1・Commentモデルの読み込み
App::import(‘Model’, ‘PluginName.Comment’);
例2・『APP/plugins/plugin_name/vendors/flickr/flickr.php』 の読み込み
App::import(‘Vendor’, ‘PluginName.flickr/flickr’);
Vendor ファイル
Vendor ファイルも、他とは少し違います。
マニュアルを例に紹介していきます。
例1・『vendors/geshi.php』の読み込み
App::import(‘Vendor’, ‘geshi’);
例2・『vendors/flickr/flickr.php』 の読み込み
App::import(‘Vendor’, ‘flickr/flickr’);
例3・『vendors/some.name.php』 の読み込み
App::import(‘Vendor’, ‘SomeName’, array(‘file’ => ‘some.name.php’));
例4・『vendors/services/well.named.php』 の読み込み
App::import(‘Vendor’, ‘WellNamed’, array(‘file’ => ‘services’.DS.’well.named.php’));
マニュアルはこちらから