3.4.4 App クラス
CakePHPにおけるクラスのロード処理はさらに合理化されました。前のバージョンでは、ロードしたいクラスの型に基づいて必要なクラスのロード処理に対して様々な関数群が存在しました。この関数群の使用は推奨されなくなりました。あらゆるクラスおよびライブラリのロードするには現在、App::import()を使用します。App::import()は次のことを保証します。クラスが1度しかロードされないこと。適切な親クラスがロードされること。そして多くのクラスで自動的にパスを解決することです。
3.4.4.1 Using App::import()
App::import($type, $name, $parent, $search, $file, $return)
初めて App::import を見ると複雑に見えるかもしれません。でも、多くの場合は2つの引数だけが必須になっています。
3.4.4.2 コアライブラリのインポート
SanitizeやXmlといったコアのライブラリは、次の仕方で読み込みます。
<?php App::import('Core', 'Sanitize') ?> <?php App::import('Core', 'Sanitize') ?>
これで、Sanitizeクラスが使えるようになります。
3.4.4.3 コントローラ、モデル、コンポーネント、ビヘイビア、ヘルパのインポート
アプリケーションに関連するすべてのクラスをApp::import()で読み込めます。以下の例を参照してください。
3.4.4.3.1 コントローラの読み込み
App::import('Controller', 'MyController')
3.4.4.3.2 モデルの読み込み
App::import('Model', 'MyModel')
3.4.4.3.3 コンポーネントの読み込み
App::import('Component', 'Auth')
3.4.4.3.4 ビヘイビアの読み込み
App::import('Behavior', 'Tree');
3.4.4.3.5 ヘルパーの読み込み
App::import('Helper', 'Html'); App::import('Helper', 'Html');
3.4.4.4 プラグインの読み込み
プラグインのクラスを読み込むのは、appとコアのクラスを読み込むのとほぼ同じです。しかし、読み込み元のプラグイン名を指定してください。
App::import('Model', 'PluginName.Comment'); App::import('Model', 'PluginName.Comment');
3.4.4.5 Vendor ファイルの読み込み
vendor() 関数は非推奨になりました。vendor ファイルはこれまでと同様に App::import() を使用して読み込むようになりました。構文はわずかに異なり、引数が追加されています。これは vendor ファイルの構造は大きく異なっていたり、すべての vendor ファイルにクラスが含まれているとは限らないためです。
以下は、いくつかのパス構造から vendor ファイルをどのように読み込むかという例です。vendor ファイルは、vendor フォルダにあると仮定します。
3.4.4.5.1 Vendor の例
vendors/geshi.php を読み込むには
App::import('Vendor', 'geshi'); App::import('Vendor', 'geshi');
vendors/flickr/flickr.php を読み込むには
App::import('Vendor', 'flickr/flickr'); App::import('Vendor', 'flickr/flickr');
vendors/some.name.php を読み込むには
App::import('Vendor', 'SomeName', array('file' => 'some.name.php')); App::import('Vendor', 'SomeName', array('file' => 'some.name.php'));
vendors/services/well.named.php を読み込むには
App::import('Vendor', 'WellNamed', array('file' => 'services'.DS.'well.named.php')); App::import('Vendor', 'WellNamed', array('file' => 'services'.DS.'well.named.php'));
