一般的に、をrequire_once
適切に使用することで、ほぼ完全に呼び出しを回避できますZend_Loader_Autoloader
。もちろん、鍵は「適切」です。
通常、はをフォルダにpublic/index.php
設定include_path
しlibrary
ます。次に、を使用している場合はZend_Application
、が登録され、の配列を使用して名前空間プレフィックスが登録されているPSR-0準拠のクラスZend_Loader_Autoloader
が検索されます。autoloadernamespaces
application/configs/application.ini
application/models
トリッキーな部分は、に表示されるモデル、に存在するサービスなど、「include_pathに存在しない」ファイルで定義されたクラスの場合ですapplication/services
。そこで定義されたクラスはPSR-0標準に従う傾向がありますが、 PSR-0マッピングは、インクルードパスから離れたベースに対して発生します。これは、システムがクラス名プレフィックスとベースパスの間のマッピングを認識している必要があることを意味します。これがリソースオートローダーZend_Application_Bootstrap_Bootstrap
の出番です。これらのリソースオートローダーは通常、アプリケーションのブートストラップ拡張および拡張するモジュールブートストラップで自動的に設定されますZend_Application_Module_Bootstrap
。
ビューヘルパーは、「include_pathの外」にあるクラスのもう1つの例であり、おそらく。のようなものapplication/views/helpers
です。これらは通常、短い形式を使用してビュースクリプトで呼び出されるため$this->someHelper($someParam)
、この短い名前から完全修飾クラス名を生成する方法をシステムに通知する必要があります。これは、$view->addPrefixPath()
名前空間プレフィックスをファイルシステムの場所にマップする方法を使用して実現されます。繰り返しになりますが、アプリレベルおよびモジュールレベルのブートストラップメカニズムにより、これらのほとんどが設定されます。
PSR-0標準に準拠していないライブラリ/クラスの場合、カスタムオートローダーを作成して(通常はBootstrapで)Zend_Loader_Autoloader
シングルトンに接続できます。これは、明示的なインクルード/リクワイアがある唯一の場所です。
include/require
tl; dr:既存のZFオートローダーメカニズムを適切に使用すれば、独自のアプリケーションコードにステートメントを含める必要はほとんどありません。