介绍

介绍 -- 如何使用PEAR基础类(析构,和错误处理)

大纲

require_once "PEAR.php";
class classname extends PEAR { ... }

描述

PEAR基础类是更多PEAR类的规定标准功能. 通常你不能直接实例化PEAR基类,你必须使用子类这样作.

它的关键作用是:

PEAR "destructors"

如果你继承PEAR一个类,名字ClassName,你可以定义一个方法叫做 _ClassName
(这个类名预先就计划有个下划线) ,当请求结束它被调用. 这在一定意义上不是destructor 你能"删除"一个物体并且让人叫destructor, 但是在感觉里PHP在物体方面给你回叫 当PHP被做执行时。 在一定意义上说,你能删除一个对象并且能析构一个对象都不叫做析构. 当php执行的时候,php会给你的对象一个回应. 下面这个例子


重要的!


你使用必须使用 "=& new"操作去实例化这个类,
$obj =& new MyClass();

如果你只用"= new",当构造函数被调用时候,PEAR的关闭列表中的注册对象会成为对象的一个副本. 当它被要求关闭的就成了这个副本的析构器,

PEAR Error Handling

PEAR的基础类要处理周围复杂的错误不光是正确/错误的值或者数字代码. 一个PEAR错误是任一一个实例化的类PEAR_Error中的一个对象PEAR_Error, 或者继承类 PEAR_Error.

PEAR的错误设计标准不算是强迫给用户一个特殊种类的输出, 也有可能处理错误的时候没有任何的输出. 当你输出格式不同于html时候(比如WML或者XML格式),这样的处理让可能的错误处理变先的柔和,

当错误对象被创建时候,它能被设置参与一些事情.比如打印一个错误消息,打印消息并退出,提高调出PHP的 trigger_error() 函数, 调用一个返回值,或者什么都不作. 这是有代表性的专门的PEAR_Error的构造器, 所有的参数都是可选的,你可以设置每个基于PEAR类的对象发生默认的错误. 请看 PEAR error 例子 如何使用 PEAR_Error 全部的资料.

例子

这个例子使用了PEAR的"poor man's kinda emulated destructors" " 被仿效的可怜穷人析构器" 来实现一个简单的类来掌握这些.让你添加数据到对象. 并且再请求的最后数据回馈到文件.

关注: PEAR 析构器 使用 PHP的关闭返回值 (register_shutdown_function()), 在PHP < 4.1,当你的php在网站服务器上运行的是欧,你不能从中输出任何东西. 除了当php运行预命令行模式,任何构造函数的打印都会丢失. 在php4.1或者更高版本中,可以在析构函数中出现输出了.

请看 警告 如果想使用析构函数,如何实例化一个对象

下一个例子举例说明了不同放发使用PEAR的错误处理机制.

这个例子展示了fsockopen()的包装(wrapper) ,他PEAR错误对象fsockopen(如果任意)返回的传送错误代码和信息. 注意, PEAR::isError() 常常用来检查一个值是否示PEAR的错误.

这个例子中PEAR_Error的操作模式简单的返回了错误对象并简单的与其它的用户(程序)分离. 这是默认的错误模式

下一个例子,我们展示了如何使用默认的错误模式:

这里,我们设置默认的错误模式 PEAR_ERROR_DIE, 我们没有raiseError调用(成为第三参数)中指定任何错误模式 ,如果fsockopen失败,raiseError使用默认错误默认并退出.

全局变量的使用

PEAR类为全局缺省值注册了一些全局变量,并且,析构函数使用一个对象列表. 所有和PEAR的类关联的全局变量都有一个 _PEAR_ 前缀.

$_PEAR_default_error_mode

如果再一个对象中没有设置默认错误模式,这个模式就被使用了. 必然有一个 PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE or PEAR_ERROR_CALLBACK.

不要直接给这个变量赋值,调用 PEAR::setErrorHandling() 使用一个静态方法,像这样:

$_PEAR_default_error_options

如果错误模式是 PEAR_ERROR_TRIGGER, 这是错误等级( E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR的一个).

不要直接给参数赋值, PEAR::setErrorHandling() 使用一个静态方法,像这样:

$_PEAR_default_error_callback

当一个错误出现并且错误模式是 PEAR_ERROR_CALLBACK而且没有操作参数, 这个变量的值就是返回类型的值.这个意思就是,你能够临时切换错误模式,不用再次指定的返回函数而得到返回值模式的返回值. 一个string字符串值代表一个函数,一个拥有(0索引的对象和1索引字符串代表的一个方法)一个对象两维数组.

再次,不要直接设置变量,调用 PEAR::setErrorHandling() 设置一个静态方法,这样:

下面例子,如何不使用返回函数切换返回和前进: