ǰλã >> PHP >> php魔术方法和魔?
  ϸ

php魔术方法和魔?

ȶȣ99   ʱ䣺2016-04-28 22:48:06.0
php魔术方法和魔??

PHP把所有以__(两?划线)开头的类方法当成魔?法?所以你定义?的类方法时,不??/span> __为前??/span>

 

1?/span>__construct()

当实例化???象的时?,这个对象的构造方法将首先??

我们知道php5对象模型和类名相同的函数?的构造函数,那么如果同时定义构?函数和__construc()方法的话?/span>php5会默认调?/span>__contruct()而不会调用同类名函数,所?/span>__contruct()作为类的默?构?函数;

 

2?/span>__destruct()

析构函数会在到某??象的?有引用都?除或者当对象?式销毁时执??/span>

 

3?/span>__get(string $name)

当试图?取一?不存在的属?时??如果试图读取???象并不存在的属?的时?,php就会给出错?的信???果在类里添加__get方法,并且我?以用这个函数实现类似java?反射的各种操作??/span>

 

4?/span>__set(string $name, mixed $value)

给未定义的变量赋值时将?调用

 

5?/span>__call(string $name, array $arguments)

当调用一????法(如未定义,或者不??)时,__call() 会?调用?/span>

__callStatic(string $name, array $arguments)

当在静?方法中调用?????法(如未定义,或者不??)时,__callStatic() 会?调用?/span>

 

6?/span>__toString()

当打印一??象的时??调用,这?法类似于java?/span>toString方法,当我们直接打印对象的时候回调这?数??/span>

 

7?/span>__clone()

当?象?克隆时调用??/span>

 

8?/span>__sleep()

serialize()函数会?查是否存在一???/span> __sleep.如果存在?/span>__sleep()方法会先?? 然后才执行序列化操作。这?能可以用于清理?象,并返回一???象中?有变量名称的数组。?果?方法不返回任何内容,?/span>NULL?列化,??/span> ??/span>E_NOTICE错?。__sleep方法常用于提交未提交的数?或类似的操作。同时,如果你有?些很大的对象,不?要保存,这个功能就很好用?/span>

 

9?/span>__wakeup()

?/span>__sleep() 相反?/span>unserialize()会?查是否存在一个__wakeup方法。?果存?则会先调?/span> __wakeup方法,?先准备?象数???/span> __wakeup经常用在反序列化操作?例?重新建立数据库连接,或执行其它初始化操作?/span>


10?/span>__isset()

当??义的变量调用isset() ?/span> empty()时,__isset() 会?调用?/span>

 

11?/span>__unset()

unset???象的属?时?用???/span>unset($c->name)?/span>

 

12?/span>__set_state()

调用var_export时,?用?用__set_state的返回?做?/span>var_export的返回???/span>

 

13?/span>__autoload()

实例化一??象时,?果?应的类不存在,则该方法?调用。简单的说就?的自动加?/span>;当你尝试使用??/span>PHP没有组织到的?/span>, 它会寻找??/span>__autoload的全?函数. 如果存在这个函数,PHP会用??数来调用?/span>,参数即类的名称??/span>

 

14?/span>__invoke()

当尝试以调用函数的方式调用一??象时,__invoke 方法会??调用?/span>

 

魔术常量:

__LINE__ 文件?当前行号?/span> 

__FILE__ 文件的完整路径和文件名??果用在?包含文件?则返回?包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含??对路径(如果??号连接,则是解析后的绝??),而在此之前的版本有时会包??对路径??/span> 

__DIR__ 文件?在的?。?果用在?包括文件?则返回?包括的文件所在的?。它等价?/span> dirname(__FILE__)。除非是根目录,否则??不包?尾的斜杠。(PHP 5.3.0?增) = 

__FUNCTION__ 函数名称?/span>PHP 4.3.0 新加)?自 PHP 5 起本常量返回该函数?定义时的名字(区分大小写)?在 PHP 4 ??值?是小写字母的??/span> 

__CLASS__ 类的名称?/span>PHP 4.3.0 新加)?自 PHP 5 起本常量返回该类?义时的名字(区分大小写)。在 PHP 4 ??值?是小写字母的??/span> 

__METHOD__ 类的方法名(PHP 5.0.0 新加)?返回?方法?义时的名字(区分大小写)?/span> 

__NAMESPACE__ 当前命名空间的名称(大小写敏感)。这?量是在编译时定义的(PHP 5.3.0 新??/span> 

  ؽ