質問

Zend Framework のオートローディングに基づいてカスタム オートローダーを構築しています (関連質問 ここ).

その質問から得られる基本的なアプローチは次のとおりです。

class My_Autoloader implements Zend_Loader_Autoloader_Interface 
{
    public function autoload($class) 
    {
        // add your logic to find the required classes in here
    }
}

次に、新しいオートローダー クラスをクラス プレフィックスにバインドします。

さて、私が確信していないのは、内部のエラーをどのように処理するかです。 autoload ZF に準拠した適切な方法でメソッド (「クラス ファイルが見つかりません」など) を実行します。私はこのフレームワーク、その規約、スタイルについては初めてです。

  • 静かに false を返して、クラス作成プロセスをクラッシュさせますか?

  • 何らかの方法でエラーまたはログメッセージを出力し(これは問題を特定するのに役立ちます)、falseを返すのでしょうか?もしそうなら、Zend ではどのような方法でそれを行うのでしょうか?

  • エラーが発生しますか?

  • 例外をスローしますか?もしそうなら、どのようなものですか?

役に立ちましたか?

解決

エラーの種類に依存していること。クラスをロードできない場合、私はそれ致命的なエラーを検討したいです。したがって、私は、例えば、例外を投げると思います。

class My_Autoloader_Exception extends Exception {}

あなたは、ZFは、パッケージレベルのカスタム例外の多くを使用しても、<のhref =「http://framework.zend.com/manual/en/zend.exception.html」のrel = "nofollowをnoreferrerことがわかります「>これは(私は、このオプションを検討したいが)から拡張するために、クラスを提供しています。

なお、そのオートローダとZend_Exceptionの使用例があります:

  try {
      // Calling Zend_Loader::loadClass() with a non-existant class will cause
      // an exception to be thrown in Zend_Loader:
      Zend_Loader::loadClass('nonexistantclass');
  } catch (Zend_Exception $e) {
      echo "Caught exception: " . get_class($e) . "\n";
      echo "Message: " . $e->getMessage() . "\n";
      // Other code to recover from the error
  }

他のヒント

ZF 自体は、次の 2 つの異なるアプローチを使用しています。

  • Zend_Loader ( 古い オートローディングメカニズム) をスローします Zend_Exception 何か問題があった場合に備えて
  • Zend_Loader_Autoloader 戻り値 false 使用済みの登録済みオートローダーが戻ったとき false

Zend_Loader_Autoloader 使用されるオートローダーでスローされた例外をキャッチしないため、最終的にカスタム例外が Zend_Loader_Autoloader. 。私は個人的にはただ戻ってきます false 要求されたクラスをロードできない場合に備えて。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top