2011-04-28 74 views
1

我已经习惯了Zend框架,当你写自己的组件,你把它自身的异常文件,但对每个文件的基础上,那么你有这样的结构:如何定义异常?

Zend/View/Exception.php 
Zend/View/Helper/Exception.php 
Zend/View/Renderer/Exception.php 

我“米确定与,我也使用Doctrine2和异常被‘存储’以不同的方式

类似的信息(在一个Zend方式)

Zend/View/Exception.php

class Exception { 

public static function invalidArguement() { 
    return new self('Invalid arguement was given, etc..'); 
} 

据我所知,第二种方法是不太灵活,但更准确,因为它会根据错误抛出异常。

第一种方法是只是一种能够抛出Zend_View_Exception与自定义消息。

另外,每个异常文件如何处理异常。

类似如下结构:

Exception/InvalidArguement.php 
Exception/AuthentificationFailed.php 
Exception/QuantityLimit.php 

是否有任何的最佳做法?任何优点/缺点?

回答

0

对我来说,最好的做法是与他们的问题组例外。

例如,如果你有多个auth例外,如InvalidDetailsUserNotFound把它们放在这里

  • 库/认证/例外/ InvalidDetails.php
  • 库/认证/例外/ UserNotFound.php

每个异常应该是Zend_Exception的扩展(除非你自己扩展它)

这种方式,你可以这样做:

throw new Library_Auth_Exception_InvalidDetails("Invalid details when trying to login"); 

使用这种方法的好处是,你不需要有一个消息,异常名称可以覆盖这就够了。

我在这里的假设是你设置的图书馆命名空间称为库,一切都内出现。

我倾向于组一切,所以一个典型的验证库可能是:

  • 认证/表格/ login.php中
  • 认证/异常/ InvalidUser.php
  • 认证/奥姆/摘要。PHP
  • 认证/奥姆/ Doctrine.php

HTH

0

我从来没有与Zend框架的工作,但如果这都可以帮助,我至少会做出一个共同的异常类和所有其他的扩展,与其只是让各存在一个。