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>Â