Ownsight

?找回密码
?立即注册
搜索
热搜: 活动 交友 discuz
查看: 1209|回复: 0
打印 上一主题 下一主题

PHP 构造函数 __construct 析构函数 __destruct()

[复制链接]

803

主题

903

帖子

3201

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3201
跳转到指定楼层
楼主
发表于 2014-10-7 11:06:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
PHP 构造函数和析构函数
构造函数和析构函数
构造函数
void __construct ([ mixed $args [, $... ]] )
PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
Note: 如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。
Example #1 使用新标准的构造函数
class BaseClass {
? ?function __construct() {
? ?? ? print "In BaseClass constructor ";
? ?}
}
class SubClass extends BaseClass {
? ?function __construct() {
? ?? ? parent::__construct();
? ?? ? print "In SubClass constructor ";
? ?}
}
$obj = new BaseClass();
$obj = new SubClass();
?>
为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法,但它却又不是构造函数。
析构函数
void __destruct ( void )
PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
Example #2 析构函数示例
class MyDestructableClass {
? ?function __construct() {
? ?? ? print "In constructor ";
? ?? ? $this->name = "MyDestructableClass";
? ?}
? ?function __destruct() {
? ?? ? print "Destroying " . $this->name . " ";
? ?}
}
$obj = new MyDestructableClass();
?>
和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。
Note:
析构函数在脚本关闭时调用,此时所有的头信息已经发出。
Note:
试图在析构函数中抛出一个异常会导致致命错误
转自:
http://www.php100.com/cover/php/80.html

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表