__construct
构造器是一个魔术方法,当对象被实例化时它会被调用。在一个类声明时它常常是第一件做的事但是没得必要他也像其他任何方法在类中任何地方都可以声明,构造器也能像其他方法样继承。如果我们想到以前继承例子从介绍到oop,我们能添加构造方法到Animal 类中,如:
3 |
public function __construct() {
|
4 |
$this ->created = time(); |
5 |
$this ->logfile_handle = fopen ( '/tmp/log.txt' , 'w' ); |
现在我们创建一个类来继承Animal类 - Penguin类!不添加任何属性和方法在Penguin类中,我们能申明并定义它继承自Animal类,如:
1 |
class Penguin extends Animal {
|
如果我们定义一个构造方法在Penguin类中,然后Penguin对象将会运行当它被实例化后。由于并没有构造方法,PHP 会参考父类方法定义
信息来使用它因此我们能覆盖父类方法,或者不,在我们的新类中-很便利。
__destruct
你发现文件句柄也是构造器一部分吗?当我们使用完一个对象时真不想把事情放一边,因此析构方法做着与构造方法相反的事情。当对象被销毁时,析构方法会运行,或者明确的说当我们不再使用它时,php会为我们清理掉。Animal类中,我们的析构方法像这样,如:
03 |
public function __construct() {
|
04 |
$this ->created = time(); |
05 |
$this ->logfile_handle = fopen ( '/tmp/log.txt' , 'w' ); |
08 |
public function __destruct() {
|
09 |
fclose( $this ->logfile_handle); |