构造函数

无效__construct({混{ $ args,…)

PHP 5权限开发人员将类中的方法定义为构造函数,一个构造函数的类每次创建一个新对象时都会调用这个方法,所以在使用对象之前做一些初始化工作是非常合适的。

注意:如果构造函数是在类的定义,它不隐式调用它的父构造函数执行父类的构造函数,你需要打电话给父母::__construct()在子类的构造函数,如果类没有定义构造函数,它会从父类一个普通的类继承法(如果不是定义为私有)。

例如# 1使用新标准的构造函数

复制代码代码如下所示:

< PHP

类的基类{

功能__construct(){

在基类构造函数打印;

}

}



类的子类扩展基类{

功能__construct(){

家长::__construct();

在子类构造函数中打印;

}

}



类othersubclass扩展基类{

BaseClass的构造函数 / /继承

}



基类构造函数 / /

$ obj =新BaseClass();



基类构造函数 / /

子类构造函数

$ obj =新的子类();



基类构造函数 / /

$ obj =新OtherSubClass();

>



输出:

在BaseClass的构造函数

在BaseClass的构造函数

在子类的构造函数

在BaseClass的构造函数

为了实现向后兼容性,如果PHP 5找不到__construct()从父类继承的类和一个函数,它将试图找到一个旧的构造函数,这是一个具有相同名称的函数作为类。兼容性的案例是有一个方法叫__construct()的类,用于其他目的。

与其他方法不同的是,PHP不会产生e_strict错误消息当__construct()是由不同的方法与父类__construct()。

从命名空间php 5.3.3、,同一名称的方法作为类的名称不再是一个构造函数,这个改变不影响上课,不在命名空间。

2例#构造函数的类的命名空间

复制代码代码如下所示:

< PHP

Foo命名空间;

类酒吧{

公共功能条(){

在构造函数中5.3.0-5.3.2 / /处理PHP

作为普通法作为 / php 5.3.3

}

}

>



析构函数

__destruct虚空(void)

PHP 5引入了析构函数的概念,这是类似于其他面向对象的语言,如C++析构函数执行。当所有引用一个对象被删除或当对象被显式销毁。

实例3实例#析构函数

复制代码代码如下所示:

< PHP

类mydestructableclass {

功能__construct(){

在构造函数中打印;

美元->名称=mydestructableclass ;

}

功能__destruct(){

打印销毁。$这个名称。;

}

}

$ obj =新MyDestructableClass();

>



与构造函数一样,父类的析构函数不被引擎在黑暗中称。执行父类的析构函数家长::__destruct()必须在子类的析构函数体明确要求。此外,像构造函数,子类继承父类的如果他们没有定义析构函数。

即使在退出()终止脚本时,析构函数也被调用。

注:

析构函数被调用脚本时是关闭的,当所有的HTTP头信息已经发出。在脚本的时间工作目录关闭可能不同于SAPI(如Apache)。

注:

试图在析构函数中抛出一个异常,在脚本终止时调用它,会导致致命的错误。