0

パフォーマンスの問題 (ベンチマーク済み) のため、デフォルトの Zend_Loader_Autoloader 以外のオートローダーを使用しようとしています。

を使用して、別の方法を試しました:

$autoloader->removeAutoloader(array('Zend_Loader_Autoloader', 'autoload'))
    ->setDefaultAutoloader(array($loader, 'loadClass'));

Autoloader は Zend Framework のほとんどのコンポーネントと密接に関連しているため、「削除」することはできません。

Xdebug を段階的にデバッグしたところ、オートローダーは次のように動作するようです。

1) getInstance 2) 呼び出されたクラス ルートが既知の名前空間であるかどうか、およびその名前空間にオートローダーが存在するかどうかを確認します 3) 名前空間のないオートローダーをスタックに置きます 4) 有効な in が見つかるまで、各オートローダーでオートローダーを試します。

ただし、私の場合、オートローダーはすでにこれを行っています (私は classMap 戦略で Opl オートローダーを使用しています)、名前空間をそれぞれのパスに登録しています。

したがって、すべての Zend チェックをバイパスしてルックアップの最初の段階でオートローダーを使用したいので、少しオーバーヘッドがあるように見えます。

それを改善するためのアイデアはありますか?Zend Framework プロジェクト内で Zend_Loader_Autoloader を使用して、カスタム (およびパフォーマンスの高い) オートローダーを効率的に使用するにはどうすればよいですか?

4

2 に答える 2

1

オートローダーは「重くリンク」されていません。好きな PSR-0 準拠のオートローダーをいつでも使用できますが、この場合Zend_Loader_Autoloader、オートローダーを に登録しZend_Loader_Autoloaderて置き換えるべきではありませんZend_Loader_Autoloader;)

spl_autoload_register($myAutoload);
于 2012-01-02T11:48:30.840 に答える