幻方常数:
1。__line__
返回文件中当前行号。
2。__file__
返回完整的路径和文件名的文件。如果用它所包含的文件,文件名包含。自php4.0.2,__file__总是包含一个绝对路径,和以前的版本有时会包含一个相对路径。
3。__function__
返回的函数名称(php4.3.0添加)。从PHP5,这种不断的返回函数的名字时,它的定义(的情况下)。在PHP4,价值总是小写。
4。__class__
返回类的名称(php4.3.0新增)。从PHP5,这种不断的返回类的名称时,它的定义(区分大小写)。在PHP4,价值总是小写。
5。__method__
返回该类的方法名称(php5.0.0新增)。返回的方法的名称时,它的定义(实例)。
神奇的功能:
1 __construct()。
构造函数:在实例化对象时调用
当__construct和类名构造函数函数名是同时存在的,这__construct将被称为和其他不叫。
4 __get()。
当一个属性被读取,属性值直接返回属性是否存在;如果没有,那__get函数被调用。
5 __set()。
当设置对象的属性时,
如果属性存在,则直接赋值。
如果它不存在,这__set函数被调用。
6 __tostring()。
一个对象是在印刷时,它被称为。如echo $ obj;或打印$ obj;
7 __clone()。
克隆人是当对象克隆。如:T =新的美元(美元);T1 =克隆$ T;
8 __sleep()。
序列化为过。如果对象是越想删除一个小东和东reserialization,我们可以认为这个功能。
9 __wakeup()。
当序列化称,一些对象的初始化工作完成。
10 __isset()。
对一个对象的属性检测时调用它的存在。如:isset($ C ->名称)。
11 __unset()。
设置一个对象的特性称为。如:unset($ C ->名称)。
12 __set_state()。
当var_export叫,它叫的__set_state返回值作为返回值的var_export。
13 __autoload()。
当实例化一个对象时,如果对应的类不存在,就调用该方法。

魔法第一种方法
由于php5.0的推出,我们已经提供了许多面向对象的特征,特别是为我们提供了许多易用神奇的方法。这些神奇的方法可以简化我们的编码和改善我们的制度设计。今天我们会知道PHP5.0带给我们的神奇的方法。
PHP |魔术方法| __tostring(),__clone(),(),()__autoload __call
__tostring()
如果我有一个班:
classperson
{
私有$名称=;
私人$年龄= 0;
function__construct($name =,=美元)
{
这个名字;
美元=年龄=年龄;
}
Functionsay()
{
echoname:。美元->名称。年龄:美元->时代。;
}
}
现在我将实例化这个类,然后打印实例:
$ P1 =新的人(liuzy,20);
回声$ P1;打印错误
很明显,这直接打印对象是错误的因为对象是一个参考的处理并不能直接打印。在这一点上,我们可以用__tostring()方法,我们添加了一个__tostring()对人类的方法:
function__tostring()
{
返回我是人,我的名字是。;
}
然后刷新页面,找出什么
现在我们明白__tostring()是一种直接打印对象,我们可以用这种方法来打印一些类的相关信息。注:这是两个下划线和方法必须有返回值。
__clone()
我们知道对象可以直接赋值,例如
这是一个有两个引用的对象
然后我执行:
(例如);
(例如);
它可以被执行,其效果是相同的。

我们有一个办法:
$ =克隆$ P1;克隆是关键字的克隆,而上面的不同之处在于P3是一个新对象。
同时,我们为类添加了一个方法:
function__clone()
{
$ > name =我复制;注:其中$是对象克隆本身,而不是当前类
}
然后我们执行:
(例如);
打印出来:
名称:我是一个副本
年龄:20
在这里,我们知道__clone()方法是在克隆对象时执行的,其作用是新克隆的副本初始化。
__call()
这种方法的主要功能是执行__call()方法的类的实例时调用一个不存在的方法。注意需要声明在类提前:
function__call($名,$ Argus)
{
回声你调用的方法:按美元。不存在;
回波参数is.print_r($ Argus);
}
__autoload()
我们称之为正常时间上课的时候,我们必须首先介绍这类属于文件(includexxx php)。如果我们把多个类在一个页面,我们要用很多includexxx。PHP显然很麻烦。
的__autoload()方法可以帮助我们解决这个问题。

例如,我们定义文件的人的课设为person_class.php,
然后创建一个新的PHP文件,test.php,编辑内容:
功能__autoload($ calssname)
{
包括美元的类名。_class.php; / /看到,也许你明白吗哈哈
}
P =新的人(mifan,22);
(比如);
的test.php页面执行不会犯错。
的__autoload()方法是一种称为当一类的生活是不存在的,它有一个字符串类型的参数声明的类的名称不存在。
当然,这类文件的名字也是很特别的,最好是有与类的关系,如person_class.php