[Zend Framework] Zend_Loader: ファイル・クラスのインポートについて調べる
インポートを行う書き方がたくさんあって分からなかったので調べてみました。
[markdown]
## require(), require_once(), include(), include_once()
### require()
* インポートする(外部ファイルを読み込む)
* 見つけられない場合、fatal error(エラーで強制停止)
### require_once()
* インポートする(外部ファイルを読み込む)
* 1回だけ読み込む(既に読み込んでいたらスキップする)
* 見つけられない場合、fatal error(エラーで強制停止)
### include()
* インポートする(外部ファイルを読み込む)
* 見つけられない場合、warning(エラーで警告)
### include_once()
* インポートする(外部ファイルを読み込む)
* 1回だけ読み込む(既に読み込んでいたらスキップする)
* 見つけられない場合、warning(エラーで警告)
> * [#12 ファイルを分割してみよう | PHP入門(応用編) – プログラミングならドットインストール](http://dotinstall.com/lessons/basic_php_advanced/6912)
> * [PHP: require – Manual](http://jp1.php.net/manual/ja/function.require.php)
> * [PHP: include – Manual](http://jp1.php.net/manual/ja/function.include.php)
> * [PHP: require_once – Manual](http://jp1.php.net/manual/ja/function.require-once.php)
> * [PHP: include_once – Manual](http://jp1.php.net/manual/ja/function.include-once.php)
## use
PHP 5.3 から対応した名前空間を利用したエイリアス/インポート。
> * [PHP: 名前空間の使用法: エイリアス/インポート – Manual](http://www.php.net/manual/ja/language.namespaces.importing.php)
> * [use と requireの違いは? – PHP – 教えて!goo](http://oshiete.goo.ne.jp/qa/7533818.html)
## Zend_Loader::loadFile(), loadClass()
### Zend_Loader::loadFile()
* include() のラッパー。
* 失敗した場合 (たとえば指定したファイルが存在しないなど) には FALSE を返す。
### Zend_Loader::loadClass()
* PHP ファイルを読み込んでクラスが存在するかどうかを確かめる。
* ファイルが見つからない場合、あるいは読み込んだファイルにクラスが存在しない場合は Zend_Exception をスロー。
> * [ファイルやクラスの動的な読み込み – Zend_Loader – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.loader.load.html)
>
> Note: Loading Classes from PHP Namespaces
> Starting in version 1.10.0, Zend Framework now allows loading classes from PHP namespaces.
## vendor/autoloader.php
composerで利用。
PSR-0 に従っているpackageをautoloadできる。
> * [PSR-0はなぜ0(≒最重要)なのか – 泥のように](http://blog.tojiru.net/article/278307117.html)
> * [PSR-0 を和訳してみた – hnwの日記](http://d.hatena.ne.jp/hnw/20101006)
> * [PHPのコーディング規約 PSR-0、PSR-1、PSR-2、PSR-3とは | 9ensanのLifeHack](http://9ensan.com/blog/programming/php/php-psr-coding-standards/)
## Zend_Loader_Autoloader
昔のコードにある require_once の嵐が今はない理由は、この Zend_Loader_Autoloader のおかげか。
自作のライブラリーもこれで呼べるよう。
> * [The Autoloader – Zend_Loader – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.loader.autoloader.html)
> * [Resource Autoloaders – Zend_Loader – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.loader.autoloader-resource.html)
> * [プラグインのロード – Zend_Loader – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.loader.pluginloader.html)
## 補遺
ここを読む限りでは、require_once を追い出して Zend_Loader_Autoloader を使うべきということのようですね。
> * [クラスの読み込み – Zend Framework Performance Guide – Zend Framework](http://framework.zend.com/manual/1.12/ja/performance.classloading.html)
この場合、composer の autoloader はどう呼ぶのでしょうか。
Zend Framework 自体を composer でインストールすると、このあたりの振る舞いはどうなるのかな。
[/markdown]