私は Zend Framework 2 を調べ始めたばかりです (そして一般的に ZF は初めてです)。ユーザー ガイドでは、新しいモジュールを追加するときにオートローディングを使用しています。ただ、新人にはかなり難しい説明だと思います。Module.php
モジュールディレクトリ内にファイルを追加しています。これには、特に次のコードが含まれています。
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
ここで、このオートローディングが何であるかを理解しようと、いろいろ調べてみました。私が理解している限り、オートローディングは、コード内のどこにでもあるspl_autoload_register()
ことを避ける方法です。require_once()
そのため、定義されていないクラスを使用しようとすると、autoload()
登録されたメソッドが実行されます。これは単に配列の検索を行い、追加されている場合は以下のようなファイルをインクルードします。
// Zend/Loader/ClassMapAutoloader.php
public function autoload($class)
{
if (isset($this->map[$class])) {
require_once $this->map[$class];
}
}
これは、パフォーマンスのために賢いようです。今書いたことが正しいことを願っています。これに基づいてgetAutoloaderConfig()
、最初のコード スニペットから何が起こっているのかを理解しようとしていますが、かなり混乱しています。このメソッドによって返される配列が に使用されているように見えますがAutoloaderFactory::factory()
、何の目的であるかはわかりません。オプションを使用してオートローダーをインスタンス化しているように見えますが、それが正確に何をするのかはわかりません。配列の 2 番目のエントリは、モジュールの名前空間のソース ファイルを見つける場所を指定していると思います - 少なくともそれは私の推測です。ただし、最初のエントリはよくわかりません。ユーザーガイドには、次のように記載されています。
開発中のため、クラスマップを介してファイルをロードする必要がないため、クラスマップ オートローダーに空の配列を提供します。
ファイルは空の配列を返すだけです。この ClassMapAutoloader の目的がわかりません。
私の言いたいことがはっきりしない場合は申し訳ありません。基本的に私は何が起こっているのか、何のために使われているのかを理解しようとしていgetAutoloaderConfig()
ますmymodule/autoload_classmap.php
. 誰かがこれに光を当てることができれば、それは大歓迎です!