Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/2/10 6:45:59 PHP5 OOP编程中的代理与异常定制_[PHP教程]
PHP5 OOP编程中的代理与异常定制_[PHP教程] 一、 DBQuery对象 现在,我们的DBQuery对象简单地模仿一个存储过程—一旦被执行,即返回一个必须进行保存的结果资源;并且如果你想使用该结果集上的函数(例如num_rows()或fetch_row())的话,你必须传递MySqlDB对象。那么,如果由DBQuery对象来实现MySqlDB对象(其设计目的是对一个执行查询的结果进行操作)实现的函数,效果如何呢?让我们继续使用上一篇示例中的代码;并且让我们假定,现在由DBQuery对象管理我们的结果资源。DBQuery类的源码如列表1所示。 列表1.使用DBQuery类。
四、 使用继承抛出定制异常 在PHP中,你可以抛出任何对象作为一个异常;但是,首先该异常应该继承自PHP的内置异常类。通过创建你自己的定制异常,你可以记录其它有关于该错误的信息,例如在一个日志文件中创建一个入口,或做你喜欢做的任何事情。你的定制异常将要做如下几件事情: · 记录由查询产生的来自DB对象的错误消息。 · 给出查询错误发生所在行代码的准确细节—通过检查调用栈。 · 显示错误消息和查询文本—当被转换成一个字符串时。 为了得到错误信息和查询文本,需要对DBQuery对象作多处更改。 1. 一个新的protected属性—compiledQuery—需要被添加到类中。 2. compile()函数使用查询文本更新查询compiledQuery属性。 3. 应该加入一个检索编译的查询文本的函数。 4. 还应该加入一个函数—它得到当前的与DBQuery对象相关联的DB对象。 列表4.抛出一个异常。
现在,你可以实现QueryException类。注意你是如何遍历调用栈以在脚本中查找实际导致错误的位置的。这正好适用于当抛出异常的DBQuery对象是一个继承自DBQuery对象的子类的情况。 列表5:QueryException类。
赞