¿ª·¢£¨php£©
»È¤Í¼£ºÌý˵ÄêÖÕ½±ÊÇÕâ¸öÊýºó£»PHP ±Õ°ü£¨Closure£©³õ̽
Ò»µãºÅÆôº½Ö®ÐÇ3Сʱǰ
Ìý˵ÄêÖÕ½±ÊÇËĸöԵŤ×ʺó
¡ý¡ý¡ý
PHP ±Õ°ü£¨Closure£©³õ̽ ÄäÃûº¯Êý
Ìáµ½±Õ°ü¾Í²»µÃ²»ÏëÆðÄäÃûº¯Êý£¬Ò²½Ð±Õ°üº¯Êý£¨closures£©£¬Ã²ËÆPHP±Õ°üʵÏÖÖ÷Òª¾ÍÊÇ¿¿Ëü¡£ÉùÃ÷Ò»¸öÄäÃûº¯ÊýÊÇÕâÑù£º
$func = function {
}; //´ø½áÊø·û
¿ÉÒÔ¿´µ½£¬ÄäÃûº¯ÊýÒòΪûÓÐÃû×Ö£¬Èç¹ûҪʹÓÃËü£¬ÐèÒª½«Æä·µ»Ø¸øÒ»¸ö±äÁ¿¡£ÄäÃûº¯ÊýÒ²ÏñÆÕͨº¯ÊýÒ»Ñù¿ÉÒÔÉùÃ÷²ÎÊý£¬µ÷Ó÷½·¨Ò²Ïàͬ£º
$func = function( $param ) {
echo $param;
};
$func( 'some string' );
//Êä³ö£º
//some string
˳±ãÌáһϣ¬PHPÔÚÒýÈë±Õ°ü֮ǰ£¬Ò²ÓÐÒ»¸ö¿ÉÒÔ´´½¨ÄäÃûº¯ÊýµÄº¯Êý£ºcreate function£¬µ«ÊÇ´úÂëÂß¼Ö»ÄÜд³É×Ö·û´®£¬ÕâÑù¿´ÆðÀ´ºÜ»Þɬ²¢ÇÒ²»ºÃά»¤£¬ËùÒÔºÜÉÙÓÐÈËÓá£
ʵÏÖ±Õ°ü½«ÄäÃûº¯ÊýÔÚÆÕͨº¯ÊýÖе±×ö²ÎÊý´«È룬Ҳ¿ÉÒÔ±»·µ»Ø¡£Õâ¾ÍʵÏÖÁËÒ»¸ö¼òµ¥µÄ±Õ°ü¡£
ϱßÓÐÈý¸öÀý×Ó
//ÀýÒ»
//ÔÚº¯ÊýÀﶨÒåÒ»¸öÄäÃûº¯Êý£¬²¢ÇÒµ÷ÓÃËü
function printStr {
$func = function( $str ) {
echo $str;
};
$func( 'some string' );
}
printStr;
//Àý¶þ
//ÔÚº¯ÊýÖаÑÄäÃûº¯Êý·µ»Ø£¬²¢ÇÒµ÷ÓÃËü
function getPrintStrFunc {
$func = function( $str ) {
echo $str;
};
return $func;
}
$printStrFunc = getPrintStrFunc;
$printStrFunc( 'some string' );
//ÀýÈý
//°ÑÄäÃûº¯Êýµ±×ö²ÎÊý´«µÝ£¬²¢ÇÒµ÷ÓÃËü
function callFunc( $func ) {
$func( 'some string' );
}
$printStrFunc = function( $str ) {
echo $str;
};
callFunc( $printStrFunc );
//Ò²¿ÉÒÔÖ±½Ó½«ÄäÃûº¯Êý½øÐд«µÝ¡£Èç¹ûÄãÁ˽âjs£¬ÕâÖÖд·¨¿ÉÄÜ»áºÜÊìϤ
callFunc( function( $str ) {
echo $str;
} );
Á¬½Ó±Õ°üºÍÍâ½ç±äÁ¿µÄ¹Ø¼ü×Ö£ºUSE
±Õ°ü¿ÉÒÔ±£´æËùÔÚ´úÂë¿éÉÏÏÂÎĵÄһЩ±äÁ¿ºÍÖµ¡£PHPÔÚĬÈÏÇé¿öÏ£¬ÄäÃûº¯Êý²»Äܵ÷ÓÃËùÔÚ´úÂë¿éµÄÉÏÏÂÎıäÁ¿£¬¶øÐèҪͨ¹ýʹÓÃuse¹Ø¼ü×Ö¡£
»»Ò»¸öÀý×Ó¿´¿´£º
function getMoney {
$rmb = 1;
$dollar = 6;
$func = function use ( $rmb ) {
echo $rmb;
echo $dollar;
};
$func;
}
getMoney;
//Êä³ö£º
//1
//±¨´í£¬ÕÒ²»µ½dorllar±äÁ¿
¿ÉÒÔ¿´µ½£¬dollarûÓÐÔÚuse¹Ø¼ü×ÖÖÐÉùÃ÷£¬ÔÚÕâ¸öÄäÃûº¯ÊýÀïÒ²¾Í²»ÄÜ»ñÈ¡µ½Ëü£¬ËùÒÔ¿ª·¢ÖÐҪעÒâÕâ¸öÎÊÌâ¡£
ÓÐÈË¿ÉÄÜ»áÏëµ½£¬ÊÇ·ñ¿ÉÒÔÔÚÄäÃûº¯ÊýÖиıäÉÏÏÂÎĵıäÁ¿£¬µ«ÎÒ·¢ÏÖÊDz»¿ÉÒԵģº
function getMoney {
$rmb = 1;
$func = function use ( $rmb ) {
echo $rmb;
//°Ñ$rmbµÄÖµ¼Ó1
$rmb++;
};
$func;
echo $rmb;
}
getMoney;
//Êä³ö£º
//1
//1
°¡£¬ÔÀ´useËùÒýÓõÄÒ²Ö»²»¹ýÊDZäÁ¿µÄÒ»¸ö¸±±¾¶øÒÑ¡£µ«ÊÇÎÒÏëÒªÍêÈ«ÒýÓñäÁ¿£¬¶ø²»ÊǸ´ÖÆ¡£
Òª´ïµ½ÕâÖÖЧ¹û£¬ÆäʵÔÚ±äÁ¿Ç°¼ÓÒ»¸ö & ·ûºÅ¾Í¿ÉÒÔÁË£º
function getMoney {
$rmb = 1;
$func = function use ( &$rmb ) {
echo $rmb;
//°Ñ$rmbµÄÖµ¼Ó1
$rmb++;
};
$func;
echo $rmb;
}
getMoney;
//Êä³ö£º
//1
//2
ºÃ£¬ÕâÑùÄäÃûº¯Êý¾Í¿ÉÒÔÒýÓÃÉÏÏÂÎĵıäÁ¿ÁË¡£Èç¹û½«ÄäÃûº¯Êý·µ»Ø¸øÍâ½ç£¬ÄäÃûº¯Êý»á±£´æuseËùÒýÓõıäÁ¿£¬¶øÍâ½çÔò²»Äܵõ½ÕâЩ±äÁ¿£¬ÕâÑùÐγɡ®±Õ°ü¡¯Õâ¸ö¸ÅÄî¿ÉÄÜ»á¸üÇåÎúһЩ¡£¸ù¾ÝÃèÊö¸Ä±äÒ»ÏÂÉÏÃæµÄÀý×Ó£º
function getMoneyFunc {
$rmb = 1;
$func = function use ( &$rmb ) {
echo $rmb;
//°Ñ$rmbµÄÖµ¼Ó1
$rmb++;
};
return $func;
}
$getMoney = getMoneyFunc;
$getMoney;
$getMoney;
$getMoney;
//Êä³ö£º
//1
//2
//3
×ܽáPHP±Õ°üµÄÌØÐÔ²¢Ã»ÓÐÌ«´ó¾ªÏ²£¬ÆäʵÓÃCLASS¾Í¿ÉÒÔʵÏÖÀàËÆÉõÖÁÇ¿´óµÃ¶àµÄ¹¦ÄÜ£¬¸ü²»ÄܺÍjsµÄ±Õ°üÏàÌá²¢ÂÛ£¬Ö»ÄÜÆÚ´ýPHPÒÔºó¶Ô±Õ°üÖ§³ÖµÄ¸Ä½ø¡£²»¹ýÄäÃûº¯Êý»¹ÊÇͦÓÐÓõ쬱ÈÈçÔÚʹÓÃpreg_replace_callbackµÈÖ®ÀàµÄº¯Êý¿ÉÒÔ²»ÓÃÔÚÍⲿÉùÃ÷»Øµ÷º¯ÊýÁË¡£
±¾ÎÄ¿ª·¢£¨php£©Ïà¹ØÊõÓï:php´úÂëÉ󼯹¤¾ß php¿ª·¢¹¤³Ìʦ ÒÆ¶¯¿ª·¢Õß´ó»á ÒÆ¶¯»¥ÁªÍø¿ª·¢ web¿ª·¢¹¤³Ìʦ Èí¼þ¿ª·¢Á÷³Ì Èí¼þ¿ª·¢¹¤³Ìʦ
±¾ÎıêÌ⣺Ȥͼ£ºÌý˵ÄêÖÕ½±ÊÇÕâ¸öÊýºó£»PHP ±Õ°ü£¨Closure£©³õ̽
±¾Õ¾Á´½Ó£ºhttp://www.codesec.net/view/521566.html
·ÖÏíÇëµã»÷£º
1.·²CodeSecTeam×ªÔØµÄÎÄÕÂ,¾ù³ö×ÔÆäËüýÌå»òÆäËû¹ÙÍø½éÉÜ,Ä¿µÄÔÚÓÚ´«µÝ¸ü¶àµÄÐÅÏ¢,²¢²»´ú±í±¾Õ¾ÔÞͬÆä¹ÛµãºÍÆäÕæÊµÐÔ¸ºÔð£»
2.×ªÔØµÄÎÄÕ½ö´ú±íÔ´´×÷Õß¹Ûµã,Óë±¾Õ¾Î޹ء£ÆäÔ´´ÐÔÒÔ¼°ÎÄÖгÂÊöÎÄ×ÖºÍÄÚÈÝδ¾±¾Õ¾Ö¤Êµ,±¾Õ¾¶Ô¸ÃÎÄÒÔ¼°ÆäÖÐÈ«²¿»òÕß²¿·ÖÄÚÈÝ¡¢ÎÄ×ÖµÄÕæÊµÐÔ¡¢ÍêÕûÐÔ¡¢¼°Ê±ÐÔ£¬²»×÷³öÈκα£Ö¤»ò³ÐÈô£»
3.Èç±¾Õ¾×ªÔØ¸åÉæ¼°°æÈ¨µÈÎÊÌâ,Çë×÷Õß¼°Ê±ÁªÏµ±¾Õ¾,ÎÒÃǻἰʱ´¦Àí¡£