2011-08-10 11 views
1

は最近まで、私がやった:webappに例外を格納していますか?カスタム例外を作成し、投げるために、以下に示すよう

ファイル: Myclass.php:

namespace myapp\libraries; 

class myclass { 

    setEmail($email) { 
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      throw new myClassException("Email not valid"); 
     } 
    } 

} 

class myClassException extends \Exception {} 

は、[OK]を、ので、これはうまく機能し、保守が容易であり、カスタム例外がある場合は、は常にが存在し、例外をスローするクラスの後に定義されます。

質問:現行のPHP規約および常識とは何ですか?

は、ここで私は考えることができソリューションです:

  1. はすぐにそれを投げる/呼び出すクラスの後にカスタム例外を宣言してください。
  2. すべてのカスタム例外を相互共有ファイル(customExceptions.php)に格納します。
  3. すべてのカスタム例外を例外の後に名前が付けられた別のファイルmyClassException.phpに、/exceptionsというディレクトリに格納します。
+0

私もこの答えをしたいと思いますが、受け入れ答えは反対票を持っているので..私はhgihlyカスタム例外は、一般的な例外は、単一のファイルに属し、それらをスローしたクラスに属していると思います。この結果、多くのファイルが作成されます。私たちの例外クラスのほとんどは空であり、1つの場所にしかスローされないので、ファイル全体が無駄に見えます。 –

+0

ログの単一ファイル+アグリゲータは、私の質問が尋ねられてから2年後、私にとって最善のものと思われます。 – Industrial

+0

すべての例外に対して単一のファイルですか?私の問題は、(symfonyを使って)私たちのアプリのモジュール構造が壊れていることです。モジュールごとに依存関係はありますが(モジュールを共有しようとは思いませんが)。 –

答えて

-1

すべてのクラスをクラスごとに1つずつ格納します。クラスの名前は、ファイルを含む名前でもかまいません(逐語的、大文字と小文字を区別します)。
"vendor/application/..."の形式で名前空間を使用してください - それは非常に便利なことですが、私は約束します。
More about it

関連する問題