自定义 Zend_Autoloader 中的正确错误处理?
我正在构建一个基于 Zend Framework 的自动加载的自定义自动加载器(相关问题此处)。
从该问题中获取的基本方法是
class My_Autoloader implements Zend_Loader_Autoloader_Interface
{
public function autoload($class)
{
// add your logic to find the required classes in here
}
}
将新的自动加载器类绑定到类前缀。
现在我不确定如何以正确的、符合 ZF 的方式处理 autoload
方法内的错误(例如“未找到类文件”)。我对这个框架、它的惯例和风格都很陌生。
-
我是否会悄悄返回 false 并让类创建过程崩溃?
-
我是否以某种方式输出错误或日志消息(这可以很好地查明问题)并返回 false?如果是这样,Zend 的做法是什么?
-
我会触发错误吗?
-
我会抛出异常吗?如果是,是什么类型?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这取决于错误的类型。如果无法加载类,我会认为这是一个致命错误。因此我会抛出一个异常,例如
你会发现ZF在包级别使用了很多自定义异常,而且提供了一个类供其扩展(尽管我认为这是可选的)。
顺便说一句,有一个
Zend_Exception
及其自动加载器的使用示例:That depends on the kind of error. I'd consider it a fatal error if a class cannot be loaded. Thus I'd throw an Exception, e.g.
You will find that ZF uses a lot of custom Exceptions on the package level and also provides a class for this to extend from (though I'd consider this optional).
Incidentally, there is a usage example of
Zend_Exception
with their autoloader:ZF 本身使用两种不同的方法:
Zend_Loader
(旧的自动加载机制)在出现问题时抛出Zend_Exception
Zend_Loader_Autoloader
当使用的注册自动加载器返回false
时返回false
Zend_Loader_Autoloader
不会捕获使用的自动加载器中抛出的任何异常,最终您的自定义异常会冒泡通过Zend_Loader_Autoloader
。如果我无法加载请求的类,我个人只会返回false
。ZF itself uses two different approaches:
Zend_Loader
(the old autoloading mechanism) throws aZend_Exception
in case something's wrongZend_Loader_Autoloader
returnsfalse
when the used registered autoloader returnsfalse
The
Zend_Loader_Autoloader
doesn't catch any exception thrown in the used autoloader to eventually your custom exception would bubble up through theZend_Loader_Autoloader
. I personally just returnfalse
in case I'm not able to load a requested class.