LoginSignup
65
65

More than 5 years have passed since last update.

CakePHP2.xのVendorファイルの読み込みに使うusesとimportの使い分け

Last updated at Posted at 2014-11-05

usesとimportの違い

結論から言うと、ロードするライブラリがオートロードの規約に従っているかどうかで使い分ける。

規約に従っている → App::uses()を使う。
規約に従っていない → App::import()を使う。

基本的にApp::import()を使う。

基本的に多くのVendorの読み込みにはApp::import()を使うのが吉。ほとんどのライブラリはCakePHPの規約に従って作られていないから。
CakePHP2.0規約

ベンダーのローディングは通常、規則に従わないパッケージのローディングを意味します。 多くのベンダーのパッケージに対しては App::import() の使用が推奨されます。
CakePHP2.0の公式ドキュメント

App::uses()を使うとパフォーマンス向上。

App::uses()は遅延ロードで、オートローダーがクラスの読み込みを管理して、クラスが使われない場合はロードしないように制御するのでパフォーマンスが向上する。但し、そのためにはファイルの作りがオートローダで制御するためのルールに従ってある必要がある。

App::uses()の使い方

// app/Vendor/Hoge.php内のHogeクラスをロードする。
App::uses('Hoge', 'Vendor');

サブディレクトリがある場合

サブディレクトリ内のクラスをロードするには、それらのパスを App::build() で追加する必要がある。

// app/Vendor/SomePackage/ClassInSomePackage.php 内の ClassInSomePackage クラスをロードする
App::build(array('Vendor' => array(APP . 'Vendor' . DS . 'SomePackage')));
App::uses('ClassInSomePackage', 'Vendor');

ベンダーのファイルは、規則に従っていなかったり、ファイル名と異なるクラスを持っていたり、クラスを含んでないかもしれません。 それらのファイルは App::import() を使用して読み込むことができます。 次の例では、いくつかのパス構造からベンダーファイルをロードする方法を示しています。 これらのベンダーファイルは、ベンダーのフォルダのいずれかに配置することができます。
CakePHP2.0公式ドキュメント

App::import()の使い方

// app/Vendor/hoge.phpをロードする
App::import('Vendor', 'hoge');

※ この場合hogeは小文字である必要がある。

サブディレクトリがある場合

// app/Vendor/hoge/fuga.phpをロードする。
App::import('Vendor', 'hoge/fuga');

ファイル名にドットが含まれる場合

// app/Vendor/hoge.fuga.phpをロードする。
App::import('Vendor', 'HogeFuga', array('file' => 'hoge.fuga.php'));

サブディレクトリがあってファイル名にドットが含まれる場合

// app/Vendor/piyo/hoge.fuga.phpをロードする。
App::import('Vendor', 'HogeFuga', array('file' => 'piyo'. DS . 'hoge.fuga.php'));

プラグインの中のVendorファイルを読み込む場合

// app/Plugin/Awesome/Vendor/services/well.named.php をロードする。
App::import('Vendor', 'Awesome.WellNamed', array('file' => 'services' . DS . 'well.named.php'));

注意点

usesとimportで引数の順番が逆になっている点に注意する。

65
65
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
65
65