Zend Framework 2(そしてZFは一般的です)を見ていきます。user guideでは、新しいモジュールを追加するときにオートロードを使用しています。しかし、私は新人にとって非常に挑戦的な説明を見つける。Zend Framework 2オートローディング
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
は今、私はいくつか試してみて、この自動読み込みがすべてに約あるかを把握するために周りに掘った:彼らは、とりわけ、以下のコードを含むモジュールディレクトリ内Module.php
ファイルを、追加しています。私が理解する限り、オートローディングは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番目のエントリは、モジュールの名前空間のソースファイルを見つける場所を指定していると思います。少なくとも、それは私の推測です。しかし、最初のエントリーはわかりません。ユーザーガイドでは、次の言葉:
我々が開発しているように、私たちは私たちは、クラスマップのオートローダーのための空の配列を提供 、クラスマップ経由Fiのレをロードする必要はありません。
ファイルは空の配列を返します。私はこのClassMapAutoloaderの目的がわからない。
申し訳ありませんが、私のポイントは不明です。基本的に私はgetAutoloaderConfig()
で何が起こっているのか把握しようとしていて、何のためにmymodule/autoload_classmap.php
が使用されています。もし誰かがこれについていくつかの光を当てることができれば、それは非常に高く評価されるでしょう!
Zendはそんなにうまく設計されていません。 – wesside
絶対に。しかし、私はあなたの周りにあなたの道を見つけると、それは実際には本当に強力だと思う。 Magentoのように。 –
私は職場で使っていますが、それは起伏です。私はKohanaを好むが、私が必要とするかもしれないZend Librariesを使う。申し訳ありません@ andy124、まだ2を使用していません、あなたの質問をハイジャックして申し訳ありません。 – wesside