PHP 魔术方法的运用
php 有不只下面要讲到的九种魔术方法, 但是这些将会引导你使用 php 魔术方法一个好的
开始。它可能魔幻,但是并不需要魔杖。
这些
'魔术'方法拥有者特殊的名字,以两个下划线开始,表示这些方法在 php 特定事件下将
会被触发。这可能听起来有点自动魔法但是它真的很酷的,我们已经看过一个简单的例子在
last post
,即我们使用一个构造器
-使用这个作为我们第一个例子
__construct
构造器是一个魔术方法,当对象被实例化时它会被调用。在一个类声明时它常常是第一件做
的事但是没得必要他也像其他任何方法在类中任何地方都可以声明,构造器也能像其他方
法样继承。如果我们想到以前继承例子从介绍到
oop,我们能添加构造方法到 Animal 类中,
如:
1
class
Animal{
2
3
public
function
__construct() {
4
$this
->created = time();
5
$this
->logfile_handle =
fopen
('/tmp/log.txt', 'w');
6
}
7
8
}
现在我们创建一个类来继承
Animal 类 - Penguin 类!不添加任何属性和方法在 Penguin 类中,
我们能申明并定义它继承自
Animal 类,如:
1
class
Penguin
extends
Animal {
2
3
}
4
5
$tux
=
new
Penguin;
6
echo
$tux
->created;
如果我们定义一个构造方法在
Penguin 类中,然后 Penguin 对象将会运行当它被实例化后。
由于并没有构造方法,
PHP 会参考父类方法定义 信息来使用它因此我们能覆盖父类方法,
或者不,在我们的新类中
-很便利。
__destruct
你发现文件句柄也是构造器一部分吗?当我们使用完一个对象时真不想把事情放一边,因
此析构方法做着与构造方法相反的事情。当对象被销毁时,析构方法会运行,或者明确的说
当我们不再使用它时,
php 会为我们清理掉。Animal 类中,我们的析构方法像这样,如: