锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍘熷瀷錛歜ool array_key_exists ( mixed key, array search )
鎻忚堪錛氱粰瀹氱殑key瀛樺湪浜庢暟緇勪腑鏃惰繑鍥濼RUE錛屽嵆浣縦ey瀵瑰簲鐨勯敭鍊間負NULL涔熻繑鍥瀟rue銆俛rray_key_exists() 涔熷彲鐢ㄤ簬瀵硅薄
2. empty
鍘熷瀷錛歜ool empty ( mixed var )
鎻忚堪錛氬鏋?var 鏄潪絀烘垨闈為浂鐨勫鹼紝鍒?empty() 榪斿洖 FALSE銆傛崲鍙ヨ瘽璇達紝""銆?銆?0"銆丯ULL銆丗ALSE銆乤rray()銆乿ar $var; 浠ュ強娌℃湁浠諱綍灞炴х殑瀵硅薄閮藉皢琚涓烘槸絀虹殑錛屽鏋?var 涓虹┖錛屽垯榪斿洖 TRUE銆?
娉ㄦ剰錛?br />A. empty鏄鍙ヨ屼笉鏄嚱鏁幫紱
B. empty鍙兘鐢ㄤ簬鍙橀噺錛岃濡俥mpty(addslashes($var))鐨勭敤娉曟槸閿欒鐨勶紝鍥犱負addslashes($var)榪斿洖甯擱噺銆?br />
3. isset
鍘熷瀷錛歜ool isset ( mixed var [, mixed var [, ...]] )
鎻忚堪錛氬鏋渧ar瀛樺湪鍒欒繑鍥濼RUE錛屽惁鍒欒繑鍥濬ALSE錛涜嫢浣跨敤 isset()嫻嬭瘯涓涓璁劇疆鎴?NULL 鐨勫彉閲忥紝灝嗚繑鍥?FALSE銆?/span>
娉?/span>鎰忥細
A. isset鏄?/span>璇彞鑰屼笉鏄?/span>鍑芥暟錛?br />B. isset鍙?/span>鑳界敤浜庡彉閲忥紝鑻ユ兂媯嫻嬪父閲忔槸鍚﹁緗彲浠ヤ嬌鐢╠efined()鍑芥暟銆?br />C. 浣跨敤unset瀹為檯涓婂氨鏄皢var緗負NULL銆?br />
鎬ц兘姣旇緝錛?br />緇撹錛歩sset ~ empty > array_key_exists
鍘熷洜錛歩sset鍜宔mpty鏄鍙ワ紝鑰宎rray_key_exists鏄嚱鏁幫紝鍚庤呮瘮鍓嶈呭浜嗗嚱鏁拌皟鐢紝鍥犳鎬ц兘涓婅紼嶅樊銆傝宨sset鍜宔mpty鐨勮寖鍥存槸涓嶄竴鏍風殑錛屼富瑕佸尯鍒湪浜庡間負NULL鐨勬儏鍐碉紝闇瑕佺壒鍒敞鎰忋?br />
]]>
鍓嶆彁錛歅HP娌℃湁榪愯鍦ㄥ畨鍏ㄦā寮?br />濡傛灉PHP榪愯鍦ㄥ畨鍏ㄦā寮忎笅錛岄偅涔堝湪鎵ц澶栭儴鍛戒護銆佹墦寮鏂囦歡銆佽繛鎺ユ暟鎹簱銆佸熀浜嶩TTP鐨勮璇佽繖4涓柟闈㈠皢浼氬彈鍒板埗綰︼紝鍙兘鍦ㄨ皟鐢ㄥ閮ㄧ▼搴忔椂鏃犳硶鑾峰彇棰勬湡鐨勭粨鏋滐紝姝ゆ椂闇瑕佽緗壒瀹氱洰褰曪紝鍙互鍦╬hp.ini涓紪杈憇afe_mode_exec_dir鍙傛暟鏉ユ寚瀹氥?br />
1. exec
鍘熷瀷錛歴tring exec ( string command [, array &output [, int &return_var]] )
鎻忚堪錛氳繑鍥炲間繚瀛樻渶鍚庣殑杈撳嚭緇撴灉錛岃屾墍鏈夎緭鍑虹粨鏋滃皢浼氫繚瀛樺埌$output鏁扮粍錛?return_var鐢ㄦ潵淇濆瓨鍛戒護鎵ц鐨勭姸鎬佺爜錛堢敤鏉ユ嫻嬫垚鍔熸垨澶辮觸錛夈?br />渚嬪瓙錛?ret = exec("ls -al", $output, $var);
娉ㄦ剰錛?br />A. 杈撳嚭緇撴灉浼氶愯榪藉姞鍒?output涓紝鍥犳鍦ㄨ皟鐢╡xec涔嬪墠闇瑕乽nset($output)錛岀壒鍒槸寰幆璋冪敤鐨勬椂鍊欍?br />B. 濡傛灉鎯抽氳繃exec璋冪敤澶栭儴紼嬪簭鍚庨┈涓婄戶緇墽琛屽悗緇唬鐮侊紝浠呬粎鍦ㄥ懡浠ら噷鍔?&"鏄笉澶熺殑錛屾鏃秂xec渚濈劧浼氱瓑寰呭懡浠ゆ墽琛屽畬姣曪紱闇瑕佸啀灝嗘爣鍑嗚緭鍑哄仛閲嶅畾鍚戞墠鍙互錛屼緥濡傦細exec("ls -al >/dev/null &", $output, $var);
C. 瑕佸浼氬杽鐢‥scapeShellCmd()鍜孍scapeShellArg()銆傚嚱鏁癊scapeShellCmd鎶婁竴涓瓧絎︿覆 涓墍鏈夊彲鑳界瀿榪嘢hell鑰屽幓鎵ц鍙﹀涓涓懡浠ょ殑瀛楃杞箟銆傝繖浜涘瓧絎﹀湪Shell涓槸鏈夌壒孌婂惈涔夌殑錛岃薄鍒嗗彿錛坾錛夛紝閲嶅畾鍚戯紙>錛夊拰浠庢枃浠惰鍏?錛?lt;錛夌瓑銆傚嚱鏁癊scapeShellArg鏄敤鏉ュ鐞嗗懡浠ょ殑鍙傛暟鐨勩傚畠鍦ㄧ粰瀹氱殑瀛楃涓蹭袱杈瑰姞涓婂崟寮曞彿錛屽茍鎶婂瓧絎︿覆涓殑鍗曞紩鍙瘋漿涔夛紝榪欐牱榪欎釜瀛楃涓?灝卞彲浠ュ畨鍏ㄥ湴浣滀負鍛戒護鐨勫弬鏁般?br />
2. system
鍘熷瀷錛歴tring system ( string command [, int &return_var] )
鎻忚堪錛氭墽琛岀粰瀹氱殑鍛戒護錛岃繑鍥炴渶鍚庣殑杈撳嚭緇撴灉錛涚浜屼釜鍙傛暟鏄彲閫夌殑錛岀敤鏉ュ緱鍒板懡浠ゆ墽琛屽悗鐨勭姸鎬佺爜銆?br />渚嬪瓙錛?ret = system("ls -al", $var);
娉ㄦ剰錛氱暐銆?br />
3. passthru
鍘熷瀷錛歷oid passthru (string command [, int return_var])
鎻忚堪錛氭墽琛岀粰瀹氱殑鍛戒護錛屼絾涓嶈繑鍥炰換浣曡緭鍑虹粨鏋滐紝鑰屾槸鐩存帴杈撳嚭鍒版樉紺鴻澶囦笂錛涚浜屼釜鍙傛暟鍙夛紝鐢ㄦ潵寰楀埌鍛戒護鎵ц鍚庣殑鐘舵佺爜銆?br />渚嬪瓙錛歱assthru("ls -al", $var);
娉ㄦ剰錛氱暐銆?br />
4. popen
鍘熷瀷錛歳esource popen ( string command, string mode )
鎻忚堪錛氭墦寮涓涓寚鍚戣繘紼嬬殑綆¢亾錛岃榪涚▼鐢辨淳鐢熺粰瀹氱殑 command 鍛戒護鎵ц鑰屼駭鐢熴?榪斿洖涓涓拰 fopen() 鎵榪斿洖鐨勭浉鍚岀殑鏂囦歡鎸囬拡錛屽彧涓嶈繃瀹冩槸鍗曞悜鐨勶紙鍙兘鐢ㄤ簬璇繪垨鍐欙級騫朵笖蹇呴』鐢?pclose() 鏉ュ叧闂傛鎸囬拡鍙互鐢ㄤ簬 fgets()錛宖getss() 鍜?fwrite()銆?
渚嬪瓙錛?fd = popen("command", 'r'); $ret = fgets($fd);
娉ㄦ剰錛氬彧鑳芥墦寮鍗曞悜綆¢亾錛屼笉鏄?r'灝辨槸'w'錛涘茍涓旈渶瑕佷嬌鐢╬close()鏉ュ叧闂?br />
5. proc_open
鍘熷瀷錛歳esource proc_open ( string cmd, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]] )
鎻忚堪錛氫笌popen綾諱技錛屼絾鏄彲浠ユ彁渚涘弻鍚戠閬撱傚叿浣撶殑鍙傛暟璇昏呭彲浠ヨ嚜宸辯炕闃呰祫鏂欙紝姣斿璇ュ崥瀹細http://hi.baidu.com/alex_wang58/blog/item/a28657de16fec55195ee372a.html銆?br />娉ㄦ剰錛?br />A. 鍚庨潰闇瑕佷嬌鐢╬roc_close()鍏抽棴璧勬簮錛屽茍涓斿鏋滄槸pipe綾誨瀷錛岄渶瑕佺敤pclose()鍏抽棴鍙ユ焺銆?br />B. proc_open鎵撳紑鐨勭▼搴忎綔涓簆hp鐨勫瓙榪涚▼錛宲hp閫鍑哄悗璇ュ瓙榪涚▼涔熶細閫鍑恒?br />C. 絎旇呭湪浣跨敤鐨勬椂鍊欓亣鍒拌幏鍙栧閮ㄧ▼搴忚緭鍑洪樆濉炵殑闂錛屼篃灝辨槸鍦ㄤ緥瀛愪腑鐨刦gets($pipes[1])璇彞闃誨浜嗭紝鏃犳硶緇х畫榪涜銆傜粡榪囧鏂規(guī)煡璇佸悗鍙戠幇錛岄棶棰樹竴鑸嚭鍦ㄥ閮ㄧ▼搴忎腑錛屾瘮濡傚閮ㄧ▼搴忔槸C紼嬪簭錛屼嬌鐢╢printf(stdin, "**** \n");杈撳嚭緇撴灉錛屾鏃墮渶瑕佸姞涓奻flush(stdout);鎵嶈錛屽惁鍒欒緭鍑虹粨鏋滃彲鑳戒細鏆傜暀緙撳瓨涓紝鏃犳硶鐪熸杈撳嚭錛岃宲hp涔熷氨鏃犳硶鑾峰彇杈撳嚭浜嗐?/span>
渚嬪瓙錛?
///< 鎵撳紑綆¢亾
$pwd = "*****";
$pipes = array();
$command = "*****";
$desc = array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w'));
$handle = proc_open($command, $desc, $pipes, $pwd);
if (!is_resource($handle)) {
fprintf(STDERR, "proc_open failed.\n");
exit(1);
}
///< 璇誨啓
fwrite($pipes[0], "*****\n");
$ret = rtrim(fgets($pipes[1]), "\n");
///< 鍏抽棴綆¢亾
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($handle);

]]>
涓. 鍙橀噺
1. php鍙橀噺
A. 鏅氬彉閲忥細{$var}
B. 鍏寵仈鏁扮粍錛歿$array.var1.var2}
C. 鏁板瓧鏁扮粍錛歿$array[0][1]}
D. 瀵硅薄錛歿$object->var}
E. 鍦ㄥ紩鍙峰唴鐨勪嬌鐢ㄦ柟娉曪紝浠ュ叧鑱旀暟緇勪負渚嬶紝鍏朵粬綾諱技錛歿function var="{$array.var1.var2}"}
2. conf鍙橀噺
A. {#var#}
B. 鍦ㄥ紩鍙峰唴鐨勪嬌鐢ㄦ柟娉曪細{function var="{#var#}"}
3. smarty淇濈暀鍙橀噺錛氱暐銆?br />
浜? 鍙橀噺璋冭妭鍣?/strong>
1. capitalize / lower / upper
鐢ㄩ旓細棣栧瓧姣嶅ぇ鍐?/ 杞負灝忓啓 / 杞負澶у啓
鐢ㄦ硶錛歿$var|capitalize} / {$var|lower} / {$var|upper}
2. count_characters / count_paragraphs / count_sentences / count_words
鐢ㄩ旓細璁$畻瀛楄妭鏁幫紝榛樿涓嶈綆楃┖鏍肩 / 璁$畻孌佃惤鏁伴噺 / 璁$畻鍙ュ瓙鏁伴噺 / 璁$畻璇嶆暟
鐢ㄦ硶錛歿$var|count_characters} {$var|count_characters:true} / {$article|count_paragraphs} / {$article|count_sentences} / {$sentence|count_words}
3. cat
鐢ㄩ旓細瀛楃涓茶繛鎺?br /> 鐢ㄦ硶錛歿$var|cat:" is a boy."}
4. nl2br
鐢ㄩ旓細鎹㈣絎︽浛鎹負<br/>
鐢ㄦ硶錛歿$var|nl2br}
5. regex_replace / replace
鐢ㄩ旓細姝e垯鏇挎崲 / 鏅氭浛鎹?br /> 鐢ㄦ硶錛歿$var|regex_replace:"/\[old\]/":"[new]"} / {$var|replace:"old":"new"}
6. spacify
鐢ㄩ旓細鍦ㄦ瘡涓瓧絎﹂棿鎻掑叆鎸囧畾瀛楃
鐢ㄦ硶錛歿$var|spacify:"^_^"}
7. date_format
鐢ㄩ旓細鏍煎紡鍖栨棩鏈燂紝綾諱技"-1 days ago"銆?201111010000"銆佹椂闂存埑絳夐兘鍙互錛屼笌strftime()鍔熻兘綾諱技
鐢ㄦ硶錛歿$time|date_format:"%H:%M:%S"}
8. default
鐢ㄩ旓細褰撳彉閲忎負絀烘椂錛岃緗粯璁ゅ?br /> 鐢ㄦ硶錛歿$var|default:"no value"}
9. escape
鐢ㄩ旓細杞爜錛屽寘鎷細html,htmlall,url,quotes,hex,hexentity,javascript
鐢ㄦ硶錛歿$articleTitle|escape:"html"}
10.indent
鐢ㄩ旓細鏂囧瓧緙╄繘錛屽彲浠ュ埗瀹氱緝榪涘瓧絎︽暟鍜屼嬌鐢ㄤ粈涔堝瓧絎︿唬鏇?br /> 鐢ㄦ硶錛歿$var|indent} {$var|indent:4} {$var|indent:4:"\t"}
11.string_format
鐢ㄩ旓細綾諱技鐢╯printf
鐢ㄦ硶錛歿$var|string_format:"%.2f"}
12.strip / strip_tags
鐢ㄩ旓細鍘婚櫎澶氫綑絀虹櫧絎︼紝鍙互鎸囧畾鍘婚櫎鐨勫瓧絎?/ 鍘婚櫎<>浠ュ強鍖呭惈鍦ㄩ噷闈㈢殑鎵鏈夊瓧絎?br /> 鐢ㄦ硶錛歿$var|strip} {$var|strip:" "} / {$var|strip_tags}
13.truncate
鐢ㄩ旓細瀛楃涓叉埅鍙栵紝榛樿鎴彇80瀛楃錛屽彲浠ユ寚瀹氳拷鍔犵殑瀛楃涓?br /> 鐢ㄦ硶錛歿$var|truncate:40} {$var|truncate:40:"...":true}
14.緇勫悎淇敼鍣?br /> 鐢ㄩ旓細欏懼悕鎬濅箟錛屽彲浠ュ皢澶氫釜鍙橀噺璋冭妭鍣ㄧ粍鍚堜嬌鐢紝涓棿鐢▅鏉ヤ唬鏇?br /> 渚嬪瓙錛歿$articleTitle|lower|spacify|truncate:30:"..."}
涓? 鍐呭緩鍑芥暟
1. capture
鐢ㄩ旓細鎹曡幏妯℃澘鍐呭鍒版煇鍙橀噺var錛屽茍涓嶈繘琛岃緭鍑?br /> 鐢ㄦ硶錛?br /> 鍦▄capture}{/capture}涓棿鐨勬暟鎹鎹曡幏錛屽彲浠ヤ嬌鐢?smarty.capture.var鏉ヤ嬌鐢紝涓嶆寚瀹歯ame鐨勮瘽錛岄粯璁や負default
{capture name=banner}
This is a test.
{/capture}
2. foreach
鐢ㄩ旓細寰幆澶勭悊
鐢ㄦ硶錛?br /> from: 鏁扮粍錛岄渶瑕佺敤$
item: 鍗曞厓鍏冪礌鍚嶇О錛屼笉闇瑕佺敤$
key: key鍚嶇О錛屼笉闇瑕佺敤$
name: 璇ュ驚鐜殑鍚嶇О錛屽彲浠ョ敤浜庤闂寰幆錛屼緥濡傦細{$smarty.foreach.foreachname.varname}
{foreach item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}<br>
{/foreach}
{/foreach}
娉ㄦ剰錛氬湪foreach涓湁涓浜涚壒孌婄殑鍙橀噺錛岄渶瑕佷嬌鐢▄$smarty.foreach.foreachname.***}鏉ヨ闂細
iteration: 琛ㄧず褰撳墠寰幆鐨勬墽琛屾鏁幫紝鍒濆涓?
first: 寰幆絎竴嬈℃墽琛屾椂琚疆涓簍rue
last: 鍚屼笂
total: 鐢ㄤ簬鏄劇ず寰幆鎵ц鐨勬鏁幫紝鍦ㄥ驚鐜腑鎴栬呭驚鐜悗鐨嗗彲浣跨敤
show: 鏄痜oreach鐨勪竴涓爣絳撅紝鐢ㄤ簬鍐沖畾鏄惁鏄劇ず璇oreach鐨勫唴瀹?br />3. include / insert
鐢ㄩ旓細鍖呭惈鍏朵粬妯℃澘 / 涓巌nclude涓嶅悓錛?insert 鎵鍖呭惈鐨勫唴瀹逛笉浼氳緙撳瓨錛屾瘡嬈¤皟鐢ㄨ妯℃澘閮戒細閲嶆柊鎵ц璇ュ嚱鏁?
鐢ㄦ硶錛歿include file="footer.tpl" title="Main menu" logo="4. if elseif else
鐢ㄩ旓細鍒嗕箣鍒ゆ柇
鐢ㄦ硶錛?br /> {if $name eq "Fred"}
Welcome Sir.
{elseif $name eq "Wilma"}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
5. ldelim / rdelim
鐢ㄩ旓細鍒嗗埆琛ㄧず宸︽嫭鍙楓佸彸鎷彿錛屽洜涓鴻繖涓や釜絎﹀彿琚敤浣渟marty妯℃澘鐨勬爣璇嗙
鐢ㄦ硶錛?br /> {ldelim} {rdelim}
6. literal
鐢ㄩ旓細鍦ㄥ唴閮ㄧ殑鏁版嵁褰撳仛鏂囨湰澶勭悊錛屼笉浣跨敤smarty妯℃澘瑙f瀽錛屼富瑕佺敤浜巎avascript鑴氭湰絳?br /> 鐢ㄦ硶錛?br /> {literal}
......
{/literal}
7. section
鐢ㄩ旓細寰幆澶勭悊
鐢ㄦ硶錛?br /> name: 璇ュ驚鐜殑鍚嶇О
loop錛氬喅瀹氬驚鐜鏁扮殑鏁扮粍錛屾敞鎰忚繖閲岀殑浣跨敤鏂規(guī)硶姣旇緝鐗瑰埆錛屽彲浠ヤ嬌鐢╯ection鏉ュ澶氫釜鏁扮粍榪涜澶勭悊錛屼絾蹇呴』鍏堢敤鍙互鍐沖畾寰幆嬈℃暟鐨勬暟緇勭粰loop璧嬪?br /> {section name=customer loop=$custid}
id: {$custid[customer]}<br>
name: {$name[customer]}<br>
address: {$address[customer]}<br>
{section name=contact loop=$contact_type[customer]}
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br>
{/section}
<p>
{/section}
濡傛灉瑕侀亶鍘嗗緇村叧鑱旀暟緇勶紝闇瑕佽繖鏍鋒潵浣跨敤錛?br /> {section name=customer loop=$contacts}
name: {$contacts[customer].name}<br>
home: {$contacts[customer].home}<br>
cell: {$contacts[customer].cell}<br>
e-mail: {$contacts[customer].email}<p>
{/section}
娉ㄦ剰錛氫笌foreach綾諱技錛屽湪section涓悓鏍鋒湁涓浜涚壒孌婂彉閲忓彲渚涗嬌鐢紝浣跨敤鏂規(guī)硶鏄細{$smarty.section.sectionname.***}
index: 鏄劇ず褰撳墠寰幆鐨勭儲寮曪紝榛樿浠?鎴栬卻tart寮濮?br /> index_prev: 鏄劇ず涓婁竴涓驚鐜儲寮曞鹼紝榛樿浠?1寮濮?br /> index_next: 鍚屼笂錛岀洿鑷蟲渶鍚庨兘姣斾笂涓嬈″ぇ1
ineration: 鍚宖oreach錛屼笌index涓嶅悓錛屽悗鑰呮槸绱㈠紩
first: 鍚宖oreach
last: 鍚宖oreach
show: 鍚宖oreach
total: 鍚宖oreach
8. strip
鐢ㄩ旓細灝嗕綅浜巤strip}{/strip}鍐呴儴html鏍囩澶栫殑鎵鏈夌┖鏍煎拰鍥炶濺娓呴櫎騫插噣錛屽茍浠tml鏍囩寮澶村拰緇撳熬
鐢ㄦ硶錛?br /> {strip}
<table border=0>
<tr>
<td>
<A HREF="{$url}">
<font color="red">This is a test</font>
</A>
</td>
</tr>
</table>
{/strip}
涓婅堪杈撳嚭涓猴細
<table border=0><tr><td><A HREF=" color="red">This is a test</font></A></td></tr></table>
鍥? 紼嬪簭鍛橀渶瑕佹敞鎰忕殑鍦版柟
1. 甯擱噺
SMARTY_DIR錛歋MARTY_DIR甯擱噺鐢ㄤ簬瀹氫綅smarty綾繪枃浠剁殑瀹屾暣緋葷粺璺緞錛屽繀欏諱互鏂滄潬緇撴潫錛屼篃鍙互涓嶅畾涔夛紝smarty妯℃澘浼氳嚜鍔ㄥ垱寤哄悎閫傜殑鍊箋?br />2. 綾誨睘鎬?br /> $template_dir: 妯℃澘鐩綍錛屼篃灝辨槸鍚刪tml鏂囦歡鏀劇疆鐩綍錛岄粯璁や負"./templates"
$compile_dir: 緙栬瘧鍚庣殑妯℃澘鐩綍錛岀粡榪噑marty瑙f瀽鍚庣殑html鏂囦歡鏀劇疆鐩綍錛岄粯璁や負"./templates_c"
$config_dir: 妯℃澘閰嶇疆鏂囦歡鐩綍錛岄粯璁や負"./configs"
$plugins_dir: 鎻掍歡鐩綍錛岄粯璁や負SMARTY_DIR 銆?"plugins"
$cache_dir: 瀛樻斁妯℃澘緙撳瓨鐨勭洰褰曪紝榛樿涓?./cache"
$debugging: 鍙互鍚姩璋冭瘯鎺у埗鍙幫紝榛樿涓篺alse錛屽緢鏈夌敤鍟婏紒錛侊紒
$debug_tpl: 瀹氫箟鐢ㄤ簬璋冭瘯鎺у埗鍙扮殑妯℃澘鏂囦歡鍚嶅瓧錛岄粯璁や負SMARTY_DIR . "libs/debug.tpl"
$global_assign: 鐢ㄤ簬瀹氫箟鍏ㄥ眬鍙橀噺錛屼緥濡傦細
php閲岋細$this->tpl->global_assign = array('my_global_1' => .....);
鍦╰emplate閲岋細{$smarty.my_global_1.***}
$compile_check: 鑷姩緙栬瘧妯℃澘錛岄粯璁よ緗負true錛屾姇鍏ヤ駭鍝佸悗涓烘ц兘璧瘋錛屽彲浠ヨ緗負false銆?br /> $force_compile: 寮鴻揩姣忔璋冪敤鏃墮噸鏂扮紪璇戞ā鏉匡紝榛樿涓篺alse錛屼笉鍙?compile_check鐨勯檺鍒訛紝涓鏃﹁緗負true鍚庝細寮鴻揩閲嶆柊緙栬瘧銆?br /> $caching: 鏄惁緙撳瓨妯℃澘杈撳嚭錛岄粯璁や負false錛屾湁鍒╀簬澧炲己鎬ц兘銆?br /> $caching_lifetime: 緙撳瓨鐢熷瓨鏃墮棿錛屽彧鍦?caching涓簍rue鏃舵湁鏁堬紝-1琛ㄧず姘歌繙鏈夋晥錛?琛ㄧず姘歌繙闇瑕侀噸鏂扮敓鎴愩傚崟浣嶆槸縐掋?br /> 娉ㄦ剰錛?compile_check銆?force_compile銆?caching涓夎呯殑鍏崇郴濡備笅錛?br /> A. 濡傛灉璁劇疆浜?compile_check錛屽鏋滀換浣曟ā鏉挎枃浠舵垨閰嶇疆鏂囦歡鏇存柊錛岄兘浼氶噸鏂扮紪璇戯紝緙撳瓨涔熶細閲嶆柊鐢熸垚錛?br /> B. 濡傛灉璁劇疆浜?force_compile錛屽垯$compile_check涓嶈搗浣滅敤錛岃岀紦瀛樹篃鎬諱細閲嶆柊鐢熸垚錛?br /> C. 濡傛灉娌℃湁璁劇疆$caching錛屽垯娌℃湁緙撳瓨錛屾ц兘鍙椾竴瀹氬獎鍝嶃?br />
浜? smarty鐨刴ethod
1. assign: 瀵規(guī)ā鏉夸嬌鐢ㄥ埌鐨刾hp鍙橀噺榪涜璧嬪?br />2. assign_by_ref: 涔熸槸璧嬪鹼紝涓嶈繃鏄紩鐢ㄨ祴鍊?br />3. clear_all_assign: 娓呴櫎鎵鏈夎祴鍊?br />4. clear_all_cache: 娓呴櫎鎵鏈夌紦瀛橈紝鍙傛暟鍙互鎸囧畾闃堝兼椂闂?br />5. clear_assign: 娓呴櫎鏌愪釜璧嬪鹼紝鍙互鎸囧畾鍗曚釜鍙橀噺鍚嶆垨鑰呮暟緇?br />6. clear_cache: 娓呴櫎鏌愪釜template鐨勭紦瀛橈紝闇瑕佹寚瀹歵emplate鐨勫悕縐?br />7. clear_config: 娓呴櫎鎵鏈夐厤緗彉閲忥紝濡傛灉鎸囧畾鍒欐竻闄ょ壒瀹氶厤緗彉閲?br />8. config_load: 鍔犺澆鏌愰厤緗枃浠跺茍灝嗘暟鎹緭鍑哄埌妯℃澘
9. display: 鏄劇ず鏌愪釜妯℃澘
10.fetch: 鎹曡幏鏌愪釜妯℃澘鐨勮緭鍑猴紝涓巇isplay涓嶅悓鐨勬槸錛屾ā鏉胯緭鍑哄唴瀹瑰茍涓嶄細鐩存帴鏄劇ず鍑烘潵錛堟湁浠涔堢敤鍛紵錛燂紵錛?br />11.get_config_vars: 鑾峰彇鎵鏈夐厤緗彉閲忕殑鍊鹼紝涔熷彲浠ユ寚瀹氭煇涓叿浣撶殑鍙橀噺鍚?br />12.get_template_vars: 鑾峰彇鎵鏈夋ā鏉垮彉閲忕殑鍊鹼紝涔熷彲浠ユ寚瀹氭煇涓叿浣撶殑鍙橀噺鍚?br />13.is_cached: 鍒ゆ柇鏌愭ā鏉跨殑緙撳瓨鏄惁瀛樺湪錛屽彧鏈夊湪$caching璁劇疆涓簍rue鏃舵墠鏈夋晥
14.template_exists: 鍒ゆ柇鏌愭ā鏉挎槸鍚﹀瓨鍦?br />
class A {
public function x() {
echo "A::x() was called.\n";
}
public function y() {
self::x();
echo "A::y() was called.\n";
}
public function z() {
$this->x();
echo "A::z() was called.\n";
}
}
class B extends A {
public function x() {
echo "B::x() was called.\n";
}
}
$b = new B();
$b->y();
echo "--\n";
$b->z();
璇ヤ緥涓紝A::y()璋冪敤浜咥::x()錛岃孊::x()瑕嗙洊浜咥::x()錛岄偅涔堝綋璋冪敤B::y()鏃訛紝B::y()搴旇璋冪敤A::x()榪樻槸 B::x()鍛紵鍦–++涓紝濡傛灉A::x()鏈瀹氫箟涓鴻櫄鍑芥暟錛岄偅涔圔::y()錛堜篃灝辨槸A::y()錛夊皢璋冪敤A::x()錛岃屽鏋淎::x()浣跨敤 virtual鍏抽敭瀛楀畾涔夋垚铏氬嚱鏁幫紝閭d箞B::y()灝嗚皟鐢˙::x()銆?br />鐒惰岋紝鍦≒HP5涓紝铏氬嚱鏁扮殑鍔熻兘鏄敱 self 鍜?$this 鍏抽敭瀛楀疄鐜扮殑銆傚鏋滅埗綾諱腑A::y()涓嬌鐢?self::x() 鐨勬柟寮忚皟鐢ㄤ簡 A::x()錛岄偅涔堝湪瀛愮被涓笉璁篈::x()鏄惁琚鐩栵紝A::y()璋冪敤鐨勯兘鏄疉::x()錛涜屽鏋滅埗綾諱腑A::y()浣跨敤 $this->x() 鐨勬柟寮忚皟鐢ㄤ簡 A::x()錛岄偅涔堝鏋滃湪瀛愮被涓瑼::x()琚獴::x()瑕嗙洊錛孉::y()灝嗕細璋冪敤B::x()銆?/p>
涓婁緥鐨勮繍琛岀粨鏋滃涓嬶細
A::x() was called. A::y() was called.
--
B::x() was called. A::z() was called.
$test = new Test();
$b = var_export($test, true);
var_dump($b);
class Test {
public $a;
public static function __set_state($array) {
$ab = new Test();
$ab->a = 10;
return $ab;
}
}
1.鏁扮粍鍑芥暟
array_product() array_search() array_unique() extract() array_count_values() array_key_exists() array_sum() 2.鏂囦歡鍑芥暟 basename() dirname() feof() fflush() file() file_exists() file_get_contents() file_put_contents filesize() filetype() flock() is_dir() is_executable() parse_ini_file() tempnam() tmpfile() touch() 3.瀛楃涓插嚱鏁?/strong> addslashes() chr() convert_uuencode() convert_uudecode() crc32() crypt() explode() htmlentities() htmlspecialchars_decode() htmlspecialchars() implode() md5() md5_file() nl2br() number_format() ord() parse_str() str_ireplace() str_shuffle() str_split() str_word_count() strcasecmp() strchr() strcmp() strip_tags() stripslashes() stripos() strpos() strrev() strtolower() strtoupper() substr() substr_replace() ucwords() parse_url(); 瑙f瀽URL錛岃繑鍥炴暟緇勶紝[HOST]="ABC.COM";[PATH]="INDEX.PHP" 4.瀛楃涓插姞瀵?/strong> md5 urlencode urldecode base64_encode base64_decode convert_uuencode() convert_uudecode() 5.姝e垯琛ㄨ揪寮?/strong> [^a-z] str_replace(); ereg_replace(); preg_match(); preg_match_all(); preg_replace(); preg_split(); 6.鏁版嵁楠岃瘉 is_numeric(); is_bool(); is_string(); intval(); strval(); settype($input,integer); 璁劇疆綾誨瀷 7.緙撳啿鍖烘帶鍒跺嚱鏁?/strong> flush — 鍒鋒柊杈撳嚭緙撳啿鍖?br />淇濆瓨鍦ㄨ緭鍑虹紦鍐插尯鐨勫唴瀹逛細琚彂閫佸埌嫻忚鍣?br />ob_start — 鎵撳紑杈撳嚭緙撳啿鍖?br />榪欐牱鎵鏈夌殑杈撳嚭淇℃伅涓嶅湪鐩存帴鍙戦佸埌嫻忚鍣紝鑰屾槸淇濆瓨鍦ㄨ緭鍑虹紦鍐插尯閲岄潰
ob_get_contents — 榪斿洖杈撳嚭緙撳啿鍖虹殑鍐呭
濡傛灉浣犳兂浠ュ悗澶勭悊杈撳嚭鐨勫唴瀹癸紝鍙互璋冪敤榪欎釜鍑芥暟淇濈暀涓涓浠?br />ob_get_length — 榪斿洖杈撳嚭緙撳啿鍖虹殑鍐呭闀垮害
ob_end_flush — 緇撴潫錛堝彂閫侊級杈撳嚭緙撳啿鍖虹殑鍐呭錛屽叧闂緭鍑虹紦鍐插尯
ob_end_clean — 鍒犻櫎錛堟斁寮冿級杈撳嚭緙撳啿鍖虹殑鍐呭錛屽叧闂緭鍑虹紦鍐插尯
濡傛灉浣犵殑紼嬪簭鍙戠幇杈撳嚭鍐呭鏈夐棶棰橈紝鍙互鏀懼純鎵鏈夎緭鍑哄唴瀹癸紝鍙互闃叉娉勬紡鏌愪簺縐樺瘑淇℃伅
ob_implicit_flush — 鎵撳紑鎴栧叧闂洿鎺ュ埛鏂?br />鎵撳紑鍚庯紝姣忎釜鑴氭湰杈撳嚭閮界洿鎺ュ彂閫佸埌嫻忚鍣紝涓嶅啀闇瑕佽皟鐢?flush(),
]]>
1銆佸鏋滆兘灝嗙被鐨勬柟娉曞畾涔夋垚static錛屽氨灝介噺瀹氫箟鎴恠tatic錛屽畠鐨勯熷害浼氭彁鍗囧皢榪?鍊嶃?br />PS錛氫簨瀹炰笂錛宖unction銆乵ethod銆乻tatic method鐨勯熷害涓嶄細鏈夊お澶у樊寮傘傚叿浣撳彲瑙?#8220;PHP鍑芥暟鐨勫疄鐜板師鐞嗗強鎬ц兘鍒嗘瀽銆愯漿杞姐?/span>”涓鏂囥?/span>
2銆?row[’id’] 鐨勯熷害鏄?row[id]鐨?鍊嶃?br />PS錛氫笉澶噦錛岃矊浼煎樊寮傚彧鏈夊悗鑰呬細鍏堝垽鏂璱d榪欎釜瀹忔槸鍚﹀瓨鍦紝濡傛灉涓嶅瓨鍦ㄥ垯鑷姩杞彉涓哄瓧絎︿覆銆?/span>
3銆乪cho 姣?print 蹇紝騫朵笖浣跨敤echo鐨勫閲嶅弬鏁?璇戞敞錛氭寚鐢ㄩ楀彿鑰屼笉鏄彞鐐?浠f浛瀛楃涓茶繛鎺ワ紝姣斿echo $str1,$str2銆?/p>
4銆佸湪鎵цfor寰幆涔嬪墠紜畾鏈澶у驚鐜暟錛屼笉瑕佹瘡寰幆涓嬈¢兘璁$畻鏈澶у鹼紝鏈濂借繍鐢╢oreach浠f浛銆?br />PS錛氬儚count銆乻trlen榪欐牱鐨勬搷浣滃叾瀹炴槸O(1)鐨勶紝鍥犳涓嶄細甯︽潵澶娑堣楋紝褰撶劧閬垮厤姣忔寰幆閮借綆楁槸姣旇緝濂界殑絳栫暐銆傛渶濂界敤foreach浠f浛for錛岃繖涓晥鐜囨洿楂橈紝濡傛灉鑰冭檻鍒癴oreach($array as $var)姣忔鎷瘋礉鐨勬秷鑰楋紝鍙互浣跨敤foreach($array as &$var)榪欐牱鐨勫紩鐢ㄣ?/span>
5銆佹敞閿閭d簺涓嶇敤鐨勫彉閲忓挨鍏舵槸澶ф暟緇勶紝浠ヤ究閲婃斁鍐呭瓨銆?br />PS錛氬鏋滄病鏈夎閿欑殑璇濓紝unset($array)涓嶄細绔嬪埢閲婃斁鍐呭瓨錛屼絾闅忔椂閲婃斁鏄釜濂戒範鎯?/span>
6銆佸敖閲忛伩鍏嶄嬌鐢╛_get錛宊_set錛宊_autoload銆?/p>
7銆乺equire_once()浠d環(huán)鏄傝吹銆?br />PS錛歳equire_once鍜宨nclude_once闇瑕佸垽閲嶏紝鍥犳鏁堢巼涓婅浣庯紝浣嗘槸5.2鐗堟湰鍚庢晥鐜囬棶棰樺凡緇忓熀鏈В鍐熾?/span>
8銆乮nclude鏂囦歡鏃跺敖閲忎嬌鐢ㄧ粷瀵硅礬寰勶紝鍥犱負瀹冮伩鍏嶄簡PHP鍘籭nclude_path閲屾煡鎵炬枃浠剁殑閫熷害錛岃В鏋愭搷浣滅郴緇熻礬寰勬墍闇鐨勬椂闂翠細鏇村皯銆?br />PS錛氭敮鎸侊紝灝介噺灝戠敤iniset()鏉ヨ緗甶nclude_path銆?/span>
9銆佸鏋滀綘鎯崇煡閬撹剼鏈紑濮嬫墽琛?璇戞敞錛氬嵆鏈嶅姟鍣ㄧ鏀跺埌瀹㈡埛绔姹?鐨勬椂鍒伙紝浣跨敤$_SERVER['REQUEST_TIME']瑕佸ソ浜巘ime()銆?br />PS錛?_SERVER['REQUEST_TIME']淇濆瓨浜嗗彂璧瘋璇鋒眰鏃跺埢鐨勬椂闂存埑錛岃宼ime()鍒欒繑鍥炲綋鍓嶆椂鍒葷殑Unix鏃墮棿鎴熾?/span>
10銆佸嚱鏁頒唬鏇挎鍒欒〃杈懼紡瀹屾垚鐩稿悓鍔熻兘銆?br />PS錛氳繖縐嶅嚱鏁版槸鎸噑trtok銆乻trstr銆乻trpos銆乻tr_replace銆乻ubstr銆乪xplode銆乮mplode絳夌瓑銆?/span>
11銆乻tr_replace鍑芥暟姣攑reg_replace鍑芥暟蹇紝浣唖trtr鍑芥暟鐨勬晥鐜囨槸str_replace鍑芥暟鐨勫洓鍊嶃?br />PS錛氬瓧絎︿覆鎿嶄綔姣旀鍒欐浛鎹㈣蹇?/span>
12銆佸鏋滀竴涓瓧絎︿覆鏇挎崲鍑芥暟錛屽彲鎺ュ彈鏁扮粍鎴栧瓧絎︿綔涓哄弬鏁幫紝騫朵笖鍙傛暟闀垮害涓嶅お闀匡紝閭d箞鍙互鑰冭檻棰濆鍐欎竴孌墊浛鎹唬鐮侊紝浣垮緱姣忔浼犻掑弬鏁版槸涓涓瓧絎︼紝鑰屼笉鏄彧鍐欎竴琛屼唬鐮佹帴鍙楁暟緇勪綔涓烘煡璇㈠拰鏇挎崲鐨勫弬鏁般?br />PS錛氶渶瑕佽冭檻鍒板唴緗嚱鏁板拰鐢ㄦ埛鑷畾涔夊嚱鏁扮殑寮閿宸紓錛屾亹鎬曡繖縐嶅仛娉曞緱涓嶅伩澶便?/span>
13銆佷嬌鐢ㄩ夋嫨鍒嗘敮璇彞(璇戞敞錛氬嵆switch case)濂戒簬浣跨敤澶氫釜if錛宔lse if璇彞銆?br />PS錛歱hp涓璼witch鏀寔鏁板煎拰瀛楃涓插彉閲忥紝姣擟鐨剆witch瑕佸ソ鐢紝寤鴻浣跨敤銆?/span>
14銆佺敤@灞忚斀閿欒娑堟伅鐨勫仛娉曢潪甯鎬綆鏁堬紝鏋佸叾浣庢晥銆?br />PS錛氭湁浠涔堟浛浠f柟娉曞悧錛熸病鏈夌殑璇濊繕鏄笉寰椾笉鐢ㄧ殑……
15銆佹墦寮apache鐨刴od_deflate妯″潡錛屽彲浠ユ彁楂樼綉欏電殑嫻忚閫熷害銆?/p>
16銆佹暟鎹簱榪炴帴褰撲嬌鐢ㄥ畬姣曟椂搴斿叧鎺夛紝涓嶈鐢ㄩ暱榪炴帴銆?br />PS錛氬湪榪炴帴涔嬪墠錛屾渶濂借緗竴涓嬬浉搴旂殑瓚呮椂鏈哄埗錛屼緥濡傞摼鎺ヨ秴鏃躲佽鍐欒秴鏃躲佺瓑寰呰秴鏃剁瓑銆?/span>
17銆侀敊璇秷鎭唬浠鋒槀璐點?/p>
18銆佸湪鏂規(guī)硶涓掑灞閮ㄥ彉閲忥紝閫熷害鏄渶蹇殑銆傚嚑涔庝笌鍦ㄥ嚱鏁頒腑璋冪敤灞閮ㄥ彉閲忕殑閫熷害鐩稿綋銆?/p>
19銆侀掑涓涓叏灞鍙橀噺瑕佹瘮閫掑涓涓眬閮ㄥ彉閲忔參2鍊嶃?/p>
20銆侀掑涓涓璞″睘鎬?濡傦細$this->prop++)瑕佹瘮閫掑涓涓眬閮ㄥ彉閲忔參3鍊嶃?/p>
21銆侀掑涓涓湭棰勫畾涔夌殑灞閮ㄥ彉閲忚姣旈掑涓涓瀹氫箟鐨勫眬閮ㄥ彉閲忔參9鑷?0鍊嶃?/p>
22銆佷粎瀹氫箟涓涓眬閮ㄥ彉閲忚屾病鍦ㄥ嚱鏁頒腑璋冪敤瀹冿紝鍚屾牱浼氬噺鎱㈤熷害(鍏剁▼搴︾浉褰撲簬閫掑涓涓眬閮ㄥ彉閲?銆侾HP澶ф浼氭鏌ョ湅鏄惁瀛樺湪鍏ㄥ眬鍙橀噺銆?/p>
23銆佹柟娉曡皟鐢ㄧ湅鏉ヤ笌綾諱腑瀹氫箟鐨勬柟娉曠殑鏁伴噺鏃犲叧錛屽洜涓烘垜(鍦ㄦ祴璇曟柟娉曚箣鍓嶅拰涔嬪悗閮?娣誨姞浜?0涓柟娉曪紝浣嗘ц兘涓婃病鏈夊彉鍖栥?/p>
24銆佹淳鐢熺被涓殑鏂規(guī)硶榪愯璧鋒潵瑕佸揩浜庡湪鍩虹被涓畾涔夌殑鍚屾牱鐨勬柟娉曘?/p>
25銆佽皟鐢ㄥ甫鏈変竴涓弬鏁扮殑絀哄嚱鏁幫紝鍏惰姳璐圭殑鏃墮棿鐩稿綋浜庢墽琛?鑷?嬈$殑灞閮ㄥ彉閲忛掑鎿嶄綔銆傜被浼肩殑鏂規(guī)硶璋冪敤鎵鑺辮垂鐨勬椂闂存帴榪戜簬15嬈$殑灞閮ㄥ彉閲忛掑鎿嶄綔銆?/p>
26銆丄pache瑙f瀽涓涓狿HP鑴氭湰鐨勬椂闂磋姣旇В鏋愪竴涓潤鎬丠TML欏甸潰鎱?鑷?0鍊嶃傚敖閲忓鐢ㄩ潤鎬丠TML欏甸潰錛屽皯鐢ㄨ剼鏈?/p>
27銆侀櫎闈炶剼鏈彲浠ョ紦瀛橈紝鍚﹀垯姣忔璋冪敤鏃墮兘浼氶噸鏂扮紪璇戜竴嬈°傚紩鍏ヤ竴濂桺HP緙撳瓨鏈哄埗閫氬父鍙互鎻愬崌25%鑷?00%鐨勬ц兘錛屼互鍏嶉櫎緙栬瘧寮閿銆?/p>
28銆佸敖閲忓仛緙撳瓨錛屽彲浣跨敤memcached銆俶emcached鏄竴嬈鵑珮鎬ц兘鐨勫唴瀛樺璞$紦瀛樼郴緇燂紝鍙敤鏉ュ姞閫熷姩鎬乄eb搴旂敤紼嬪簭錛屽噺杞繪暟鎹簱璐熻澆銆傚榪愮畻鐮?(OP code)鐨勭紦瀛樺緢鏈夌敤錛屼嬌寰楄剼鏈笉蹇呬負姣忎釜璇鋒眰鍋氶噸鏂扮紪璇戙?/p>
29銆佸綋鎿嶄綔瀛楃涓插茍闇瑕佹楠屽叾闀垮害鏄惁婊¤凍鏌愮瑕佹眰鏃訛紝浣犳兂褰撶劧鍦頒細浣跨敤strlen()鍑芥暟銆傛鍑芥暟鎵ц璧鋒潵鐩稿綋蹇紝鍥犱負瀹冧笉鍋氫換浣曡綆楋紝鍙繑鍥炲湪zval 緇撴瀯(C鐨勫唴緗暟鎹粨鏋勶紝鐢ㄤ簬瀛樺偍PHP鍙橀噺)涓瓨鍌ㄧ殑宸茬煡瀛楃涓查暱搴︺備絾鏄紝鐢變簬strlen()鏄嚱鏁幫紝澶氬灝戝皯浼氭湁浜涙參錛屽洜涓哄嚱鏁拌皟鐢ㄤ細緇忚繃璇稿姝ラ錛屽瀛楁瘝灝忓啓鍖?璇戞敞錛氭寚鍑芥暟鍚嶅皬鍐欏寲錛孭HP涓嶅尯鍒嗗嚱鏁板悕澶у皬鍐?銆佸搱甯屾煡鎵撅紝浼氳窡闅忚璋冪敤鐨勫嚱鏁頒竴璧鋒墽琛屻傚湪鏌愪簺鎯呭喌涓嬶紝浣犲彲浠ヤ嬌鐢╥sset() 鎶宸у姞閫熸墽琛屼綘鐨勪唬鐮併?/p>
銆銆(涓句緥濡備笅)
銆銆if (strlen($foo) < 5) { echo “Foo is too short”$$ }
銆銆(涓庝笅闈㈢殑鎶宸у仛姣旇緝)
銆銆if (!isset($foo{5})) { echo “Foo is too short”$$ }
銆銆璋冪敤isset()鎭板閥姣攕trlen()蹇紝鍥犱負涓庡悗鑰呬笉鍚岀殑鏄紝isset()浣滀負涓縐嶈璦緇撴瀯錛屾剰鍛崇潃瀹冪殑鎵ц涓嶉渶瑕佸嚱鏁版煡鎵懼拰瀛楁瘝灝忓啓鍖栥備篃灝辨槸璇達紝瀹為檯涓婂湪媯楠屽瓧絎︿覆闀垮害鐨勯《灞備唬鐮佷腑浣犳病鏈夎姳澶寮閿銆?br />PS錛氶暱瑙佽瘑浜嗐?/span>
30銆佸綋鎵ц鍙橀噺$i鐨勯掑鎴栭掑噺鏃訛紝$i++浼氭瘮++$i鎱竴浜涖傝繖縐嶅樊寮傛槸PHP鐗規(guī)湁鐨勶紝騫朵笉閫傜敤浜庡叾浠栬璦錛屾墍浠ヨ涓嶈淇敼浣犵殑C鎴朖ava浠g爜騫舵寚鏈涘畠浠兘绔嬪嵆鍙樺揩錛屾病鐢ㄧ殑銆?+$i鏇村揩鏄洜涓哄畠鍙渶瑕?鏉℃寚浠?opcodes)錛?i++鍒欓渶瑕?鏉℃寚浠ゃ傚悗緗掑瀹為檯涓婁細浜х敓涓涓復鏃跺彉閲忥紝榪欎釜涓存椂鍙橀噺闅忓悗琚掑銆傝屽墠緗掑鐩存帴鍦ㄥ師鍊間笂閫掑銆傝繖鏄渶浼樺寲澶勭悊鐨勪竴縐嶏紝姝eZend鐨凱HP浼樺寲鍣ㄦ墍浣滅殑閭f牱銆傜墷璁拌繖涓紭鍖栧鐞嗕笉澶變負涓涓ソ涓繪剰錛屽洜涓哄茍涓嶆槸鎵鏈夌殑鎸囦護浼樺寲鍣ㄩ兘浼氬仛鍚屾牱鐨勪紭鍖栧鐞嗭紝騫朵笖瀛樺湪澶ч噺娌℃湁瑁呴厤鎸囦護浼樺寲鍣ㄧ殑浜掕仈緗戞湇鍔℃彁渚涘晢(ISPs)鍜屾湇鍔″櫒銆?/p>
31銆佸茍涓嶆槸浜嬪繀闈㈠悜瀵硅薄(OOP)錛岄潰鍚戝璞″線寰寮閿寰堝ぇ錛屾瘡涓柟娉曞拰瀵硅薄璋冪敤閮戒細娑堣楀緢澶氬唴瀛樸?/p>
32銆佸茍闈炶鐢ㄧ被瀹炵幇鎵鏈夌殑鏁版嵁緇撴瀯錛屾暟緇勪篃寰堟湁鐢ㄣ?/p>
33銆佷笉瑕佹妸鏂規(guī)硶緇嗗垎寰楄繃澶氾紝浠旂粏鎯蟲兂浣犵湡姝f墦綆楅噸鐢ㄧ殑鏄摢浜涗唬鐮?
34銆佸綋浣犻渶瑕佹椂錛屼綘鎬昏兘鎶婁唬鐮佸垎瑙f垚鏂規(guī)硶銆?br />PS錛氬垎瑙f垚鏂規(guī)硶瑕侀傚綋錛岃鏁板皯浣跨敤棰戠巼楂樼殑鏂規(guī)硶灝介噺鐢ㄧ洿鎺ュ啓浠g爜錛屽彲浠ュ噺灝戝嚱鏁板爢鏍堝紑閿錛涗笖鏂規(guī)硶宓屽涓嶅疁榪囨繁錛屽惁鍒欏ぇ澶у獎鍝峆HP鐨勮繍琛屾晥鐜囥?/span>
35銆佸敖閲忛噰鐢ㄥぇ閲忕殑PHP鍐呯疆鍑芥暟銆?/p>
36銆佸鏋滃湪浠g爜涓瓨鍦ㄥぇ閲忚楁椂鐨勫嚱鏁幫紝浣犲彲浠ヨ冭檻鐢–鎵╁睍鐨勬柟寮忓疄鐜板畠浠?/p>
37銆佽瘎浼版楠?profile)浣犵殑浠g爜銆傛楠屽櫒浼氬憡璇変綘錛屼唬鐮佺殑鍝簺閮ㄥ垎娑堣椾簡澶氬皯鏃墮棿銆俋debug璋冭瘯鍣ㄥ寘鍚簡媯楠岀▼搴忥紝璇勪及媯楠屾諱綋涓婂彲浠ユ樉紺哄嚭浠g爜鐨勭摱棰堛?/p>
38銆乵od_zip鍙綔涓篈pache妯″潡錛岀敤鏉ュ嵆鏃跺帇緙╀綘鐨勬暟鎹紝騫跺彲璁╂暟鎹紶杈撻噺闄嶄綆80%銆?/p>
39銆佸湪鍙互鐢╢ile_get_contents鏇夸唬file銆乫open銆乫eof銆乫gets絳夌郴鍒楁柟娉曠殑鎯呭喌涓嬶紝灝介噺鐢╢ile_get_contents錛屽洜涓轟粬鐨勬晥鐜囬珮寰楀!浣嗘槸瑕佹敞鎰廸ile_get_contents鍦ㄦ墦寮涓涓猆RL鏂囦歡鏃跺欑殑PHP鐗堟湰闂;
PS錛氳繖涓璁頒綇錛屽敖閲忎嬌鐢╢ile_get_contents鍜宖ile_put_contents錛屼笉闇瑕佽嚜宸卞垽鏂枃浠跺彞鏌勬墦寮鏄惁鎴愬姛銆?/span>
40銆佸敖閲忕殑灝戣繘琛屾枃浠舵搷浣滐紝铏界劧PHP鐨勬枃浠舵搷浣滄晥鐜囦篃涓嶄綆鐨?
41銆佷紭鍖朣elect SQL璇彞錛屽湪鍙兘鐨勬儏鍐典笅灝介噺灝戠殑榪涜Insert銆乁pdate鎿嶄綔(鍦╱pdate涓婏紝鎴戣鎭舵壒榪?;
42銆佸敖鍙兘鐨勪嬌鐢≒HP鍐呴儴鍑芥暟(浣嗘槸鎴戝嵈涓轟簡鎵句釜PHP閲岄潰涓嶅瓨鍦ㄧ殑鍑芥暟錛屾氮璐逛簡鏈彲浠ュ啓鍑轟竴涓嚜瀹氫箟鍑芥暟鐨勬椂闂達紝緇忛獙闂鍟?);
PS錛氬唴緗嚱鏁版瘮鐢ㄦ埛鑷畾涔夊嚱鏁版晥鐜囬珮浜嗗皢榪戜竴涓暟閲忕駭銆?/span>
43銆佸驚鐜唴閮ㄤ笉瑕佸0鏄庡彉閲忥紝灝ゅ叾鏄ぇ鍙橀噺錛氬璞?榪欏ソ鍍忎笉鍙槸PHP閲岄潰瑕佹敞鎰忕殑闂鍚?);
PS錛氳繖涓繀欏葷殑錛屽彉閲忚繃澶氭垨鑰呰繃澶ф椂錛屾瘡嬈¢噸鍒嗛厤鐨勫紑閿灝辨棤娉曞拷鐣ャ?/span>
44銆佸緇存暟緇勫敖閲忎笉瑕佸驚鐜祵濂楄祴鍊?
45銆佸湪鍙互鐢≒HP鍐呴儴瀛楃涓叉搷浣滃嚱鏁扮殑鎯呭喌涓嬶紝涓嶈鐢ㄦ鍒欒〃杈懼紡;
46銆乫oreach鏁堢巼鏇撮珮錛屽敖閲忕敤foreach浠f浛while鍜宖or寰幆;
47銆佺敤鍗曞紩鍙鋒浛浠e弻寮曞彿寮曠敤瀛楃涓?
PS錛氭檿錛岃繖涓笉灝辨槸絎竴鏉″悧錛?/span>
48銆?#8220;鐢╥+=1浠f浛i=i+1銆傜鍚坈/c++鐨勪範鎯紝鏁堢巼榪橀珮”;
49銆佸global鍙橀噺錛屽簲璇ョ敤瀹屽氨unset()鎺?
<?php
//鍒涘緩瀵硅薄
$mysqli = mysqli_init();//璁劇疆瓚呮椂閫夐」
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);//榪炴帴
$mysqli->real_connect('localhost', 'my_user', 'my_password', 'world');//濡傛灉瓚呮椂鎴栬呭叾浠栬繛鎺ュけ璐ユ墦鍗伴敊璇俊鎭?/span>
if (mysqli_connect_errno()) {
printf("Connect failed: %s/n", mysqli_connect_error());
exit();
}
//鎴愬姛杈撳嚭榪炴帴淇℃伅
printf ("Connection: %s/n.", $mysqli->host_info);$mysqli->close();
?>
榪欎釜鏄繛鎺ヨ秴鏃訛紝浣嗘槸鏈変簺鏃跺欐垜浠渶瑕佹煡璇㈣鍐欒秴鏃訛紝姣斿璇存垜浠竴涓暟鎹簱鍘嬪姏寰堝ぇ錛屾垨鑰呰繛鎺ュ緢澶氾紝閭d箞鏁版嵁搴撴煡璇㈠氨寰堢紦鎱紝浣嗘槸鎴戝笇鏈涙煇浜涗笉閲嶈鐨勬暟鎹紝姣斿璇存枃绔犵偣鍑繪暟榪欑濡傛灉鏌ヨ瓚呮椂浜嗗氨涓嶆樉紺猴紝鑷沖皯鑳藉淇濊瘉涓諱綋欏甸潰姝g‘鏄劇ず錛屼絾鏄煡閬峆HP鎵嬪唽娌℃湁鍙戠幇榪欎釜鎿嶄綔閫夐」鎴栬呭嚱鏁般傛墜鍐岄噷鍙湁榪欎箞鍥涗釜閫夐」錛?/p>

璺熻釜 mysqli 鐨勬墿灞曟簮浠g爜鍙戠幇瀹冨簳灞傝皟鐢ㄧ殑鏄?libmysqlclient 鐨?mysql_options錛?/p>
php-5.2.8/ext/mysqli/mysqli_api.c

騫朵笖鍦╩ysqli鐨凱HP鎵╁睍涓氨鍙鍑轟簡鍑犱釜鍙橀噺錛?/p>
php-5.2.8/ext/mysqli/mysqli.c

澶ф鐪嬩簡涓涓?libmysqlclient 鐨勪唬鐮侊紝鍙戠幇鍏跺疄瀹冭嚜甯︽槸鏈夎鍐欒秴鏃惰緗殑錛?/p>
mysql-5.1.30/sql-common/client.c

鍥犱負瀹冭嚜宸卞畾涔変簡寰堝鎿嶄綔閫夐」錛屽彧鏄痯hp鎵╁睍閲屾病鏈夛細
mysql-5.1.30/include/mysql.h

鐪嬬湅mysql涓殑璇誨啓瓚呮椂鏄浣曞疄鐜扮殑錛?/span>
mysql-5.1.30/sql-common/client.c


璇誨啓瓚呮椂鐪熸鎿嶄綔鐨勫湴鏂癸紝瓚呮椂澶勭悊榪欓噷閲嶈瘯浜嗕袱嬈★紝榪樻槸鍐欐浜嗭細
mysql-5.1.30/sql/net_serv.cc


鐜板湪鍩烘湰寰楀嚭浜嗙粨璁猴細
鎸夌収涓婇潰鏌ョ湅浠g爜鏉ョ湅錛岀洰鍓峆HP閽堝MySQL鏌ヨ瓚呮椂浠ヤ笅闄愬埗錛?/span> 1. 瓚呮椂璁劇疆鍗曚綅涓虹錛屾渶灝戦厤緗?縐?/span> 2. 浣唌ysql搴曞眰鐨剅ead浼氶噸璇曚袱嬈★紝鎵浠ュ疄闄呬細鏄?3 縐?/span> 閲嶈瘯涓ゆ +銆鑷韓涓嬈?= 3鍊嶈秴鏃舵椂闂淬?/span> 閭d箞灝辨槸璇存渶灝戣秴鏃舵椂闂存槸3縐掞紝涓嶄細浣庝簬榪欎釜鍊鹼紝瀵逛簬澶ч儴鍒嗗簲鐢ㄦ潵璇村彲浠ユ帴鍙楋紝浣嗘槸瀵逛簬灝忛儴鍒嗗簲鐢ㄩ渶瑕佷紭鍖栥?/span>
鐜板湪鎴戜滑鏉ョ湅鐪嬪鏋滄垜浠嚜宸辮璁劇疆瓚呮椂錛屾垜浠嚜宸卞帇鍏?MYSQL_OPT_READ_TIMEOUT 涔熸槸鍙互杈懼埌璇誨啓瓚呮椂鏁堟灉鐨勶紝鍐欎竴孌典唬鐮佹潵嫻嬭瘯涓涓嬶細
<?php
//鑷繁瀹氫箟璇誨啓瓚呮椂甯擱噺
if (!defined('MYSQL_OPT_READ_TIMEOUT')) {
define('MYSQL_OPT_READ_TIMEOUT', 11);
}
if (!defined('MYSQL_OPT_WRITE_TIMEOUT')) {
define('MYSQL_OPT_WRITE_TIMEOUT', 12);
}//璁劇疆瓚呮椂
$mysqli = mysqli_init();
$mysqli->options(MYSQL_OPT_READ_TIMEOUT, 3);
$mysqli->options(MYSQL_OPT_WRITE_TIMEOUT, 1);//榪炴帴鏁版嵁搴?br />$mysqli->real_connect("localhost", "root", "root", "test");
if (mysqli_connect_errno()) {
printf("Connect failed: %s/n", mysqli_connect_error());
exit();
}//鎵ц鏌ヨ sleep 1縐掍笉瓚呮椂
printf("Host information: %s/n", $mysqli->host_info);
if (!($res=$mysqli->query('select sleep(1)'))) {
echo "query1 error: ". $mysqli->error ."/n";
} else {
echo "Query1: query success/n";
}//鎵ц鏌ヨ sleep 9縐掍細瓚呮椂
if (!($res=$mysqli->query('select sleep(9)'))) {
echo "query2 error: ". $mysqli->error ."/n";
} else {
echo "Query2: query success/n";
}$mysqli->close();
echo "close mysql connection/n";
?>
鏌ョ湅涓婇潰浠g爜鐨勬墽琛岀粨鏋滐紝楠岃瘉浜嗕笂闈㈢殑瑙傜偣錛岀涓涓煡璇㈡垚鍔熶簡錛岀浜屼釜鏌ヨ榪炴帴琚柇寮浜嗭細

鍩烘湰涓婂埌榪欓噷灝卞熀鏈兘澶熻В鍐砅HP鍦ㄩ拡瀵筂ySQL璇誨啓鏌ヨ鎿嶄綔瓚呮椂鐨勫鐞嗕簡錛屽笇鏈涘浣犳湁甯姪銆?br />
// #####################################################
// #####################################################
鏈漢鎸夌収浣滆呯殑鏂規(guī)硶緙栦唬鐮侊紝榪愯鏃跺湪$mysqli->options(MYSQL_OPT_READ_TIMEOUT, 3);榪欎竴姝ュ氨榪斿洖false浜嗭紝瀹為檯鏌ヨ鏃禦EAD_TIMEOUT涔熸病鏈夊彂鎸ヤ綔鐢ㄣ傚悗鏉ョ湅php-5.3.8\php-5.3.8\ext\mysqli\mysqli_api.c婧愪唬鐮佹椂鍙戠幇PHP_FUNCTION(mysqli_options)閲屾湁涓琛屼唬鐮侊細
expected_type = mysqli_options_get_option_zval_type(mysql_option);
榪欎釜鍑芥暟鐨勪綔鐢ㄦ槸鍒ゆ柇options鍊肩被鍨嬶紝鍏朵腑鏈変竴孌碉細
#ifdef MYSQL_OPT_READ_TIMEOUT
case MYSQL_OPT_READ_TIMEOUT:
case MYSQL_OPT_WRITE_TIMEOUT:
case MYSQL_OPT_GUESS_CONNECTION:
case MYSQL_OPT_USE_EMBEDDED_CONNECTION:
case MYSQL_OPT_USE_REMOTE_CONNECTION:
case MYSQL_SECURE_AUTH:
#endif /* MySQL 4.1.1 */
.........
return IS_LONG;
.........
default:
return IS_NULL;
璨屼技鐢變簬娌℃湁瀹氫箟MYSQL_OPT_READ_TIMEOUT榪欎釜瀹忥紝鎵浠ptions絳変簬MYSQL_OPT_READ_TIMEOUT鏃惰褰掑埌IS_NULL鐨勮繑鍥炵粨鏋滀腑浜嗭紝姝ゆ椂PHP_FUNCTION(mysqli_options)浼氭墽琛屽涓嬬粨鏋滐細
switch (expected_type) {
case IS_STRING:
ret = mysql_options(mysql->mysql, mysql_option, Z_STRVAL_PP(mysql_value));
break;
case IS_LONG:
l_value = Z_LVAL_PP(mysql_value);
ret = mysql_options(mysql->mysql, mysql_option, (char *)&l_value);
break;
default:
ret = 1;
break;
}
涔熷氨鏄錛屼笉浼氭墽琛宮ysql_options()鏂規(guī)硶錛岃屾槸鐩存帴榪斿洖false銆?/span>
鍦ㄤ換浣曡璦涓紝鍑芥暟閮芥槸鏈鍩烘湰鐨勭粍鎴愬崟鍏冦傚浜巔hp鐨勫嚱鏁幫紝瀹冨叿鏈夊摢浜涚壒鐐癸紵鍑芥暟璋冪敤鏄庝箞瀹炵幇鐨勶紵php鍑芥暟鐨勬ц兘濡備綍錛屾湁浠涔堜嬌鐢ㄥ緩璁紵
鏈枃灝嗕粠鍘熺悊鍑哄彂榪涜鍒嗘瀽緇撳悎瀹為檯鐨勬ц兘嫻嬭瘯灝濊瘯瀵硅繖浜涢棶棰樿繘琛屽洖絳旓紝鍦ㄤ簡瑙e疄鐜扮殑鍚屾椂鏇村ソ鐨勭紪鍐檖hp紼嬪簭銆傚悓鏃朵篃浼氬涓浜涘父瑙佺殑php鍑芥暟榪涜浠嬬粛銆?
涓涓猵hp鍑芥暟鏈緇堟槸濡備綍鎵ц錛岃繖涓祦紼嬫槸鎬庝箞鏍風殑鍛紵
瑕佸洖絳旇繖涓棶棰橈紝鎴戜滑鍏堟潵鐪嬬湅php浠g爜鐨勬墽琛屾墍緇忚繃鐨勬祦紼嬨?
浠庡浘1鍙互鐪嬪埌錛宲hp瀹炵幇浜嗕竴涓吀鍨嬬殑鍔ㄦ佽璦鎵ц榪囩▼錛氭嬁鍒頒竴孌典唬鐮佸悗錛岀粡榪囪瘝娉曡В鏋愩佽娉曡В鏋愮瓑闃舵鍚庯紝
婧愮▼搴忎細琚炕璇戞垚涓涓釜鎸囦護(opcodes)錛岀劧鍚嶼END铏氭嫙鏈洪『嬈℃墽琛岃繖浜涙寚浠ゅ畬鎴愭搷浣溿侾hp鏈韓鏄敤c瀹炵幇鐨勶紝
鍥犳鏈緇堣皟鐢ㄧ殑涔熼兘鏄痗鐨勫嚱鏁幫紝瀹為檯涓婏紝鎴戜滑鍙互鎶妏hp鐪嬪仛鏄竴涓猚寮鍙戠殑杞歡銆?br />閫氳繃涓婇潰鎻忚堪涓嶉毦鐪嬪嚭錛宲hp涓嚱鏁扮殑鎵ц涔熸槸琚炕璇戞垚浜唎pcodes鏉ヨ皟鐢紝姣忔鍑芥暟璋冪敤瀹為檯涓婃槸鎵ц浜嗕竴鏉℃垨澶氭潯鎸囦護銆?
瀵逛簬姣忎竴涓嚱鏁幫紝zend閮介氳繃浠ヤ笅鐨勬暟鎹粨鏋勬潵鎻忚堪
typedef union _zend_function { zend_uchar type; /* MUST be the first element of this struct! */ struct { zend_uchar type; /* never used */ char *function_name; zend_class_entry *scope; zend_uint fn_flags; union _zend_function *prototype; zend_uint num_args; zend_uint required_num_args; zend_arg_info *arg_info; zend_bool pass_rest_by_reference; unsigned char return_reference; } common; zend_op_array op_array; zend_internal_function internal_function; } zend_function; typedef struct _zend_function_state { HashTable *function_symbol_table; zend_function *function; void *reserved[ZEND_MAX_RESERVED_RESOURCES]; } zend_function_state;
鍏朵腑錛?br />type鏍囨槑浜嗗嚱鏁扮殑綾誨瀷錛氱敤鎴峰嚱鏁般佸唴緗嚱鏁般侀噸杞藉嚱鏁般?br />Common涓寘鍚嚱鏁扮殑鍩烘湰淇℃伅錛屽寘鎷嚱鏁板悕錛屽弬鏁頒俊鎭紝鍑芥暟鏍囧織錛堟櫘閫氬嚱鏁般侀潤鎬佹柟娉曘佹娊璞℃柟娉曪級絳夊唴瀹廣?br />鍙﹀錛屽浜庣敤鎴峰嚱鏁幫紝榪樻湁涓涓嚱鏁扮鍙瘋〃錛岃褰曚簡鍐呴儴鍙橀噺絳夛紝榪欎釜灝嗗湪鍚庨潰璇﹁堪銆?
Zend緇存姢浜嗕竴涓叏灞function_table錛岃繖鏄竴涓ぇ鐨刪ash琛ㄣ傚嚱鏁拌皟鐢ㄧ殑鏃跺欎細棣栧厛鏍規(guī)嵁鍑芥暟鍚嶄粠琛ㄤ腑鎵懼埌瀵瑰簲鐨剒end_function銆?br />褰撹繘琛屽嚱鏁拌皟鐢ㄦ椂鍊欙紝铏氭嫙鏈轟細鏍規(guī)嵁type鐨勪笉鍚屽喅瀹氳皟鐢ㄦ柟娉曪紝 涓嶅悓綾誨瀷鐨勫嚱鏁幫紝鍏舵墽琛屽師鐞嗘槸涓嶇浉鍚岀殑 銆?
鍐呯疆鍑芥暟錛屽叾鏈川涓婂氨鏄湡姝g殑c鍑芥暟錛屾瘡涓涓唴緗嚱鏁幫紝php鍦ㄦ渶緇堢紪璇戝悗閮戒細灞曞紑鎴愪負涓涓悕鍙珃if_xxxx鐨刦unction錛屾瘮濡傛垜浠父瑙佺殑sprintf錛?br />瀵瑰簲鍒板簳灞傚氨鏄痾if_sprintf銆俍end鍦ㄦ墽琛岀殑鏃跺欙紝濡傛灉鍙戠幇鏄唴緗嚱鏁幫紝鍒欏彧鏄畝鍗曠殑鍋氫竴涓漿鍙戞搷浣溿?
Zend鎻愪緵浜嗕竴緋誨垪鐨刟pi渚涜皟鐢紝鍖呮嫭鍙傛暟鑾峰彇銆佹暟緇勬搷浣溿佸唴瀛樺垎閰嶇瓑銆傚唴緗嚱鏁扮殑鍙傛暟鑾峰彇錛岄氳繃zend_parse_parameters鏂規(guī)硶鏉ュ疄鐜幫紝
瀵逛簬鏁扮粍銆佸瓧絎︿覆絳夊弬鏁幫紝zend瀹炵幇鐨勬槸嫻呮嫹璐濓紝鍥犳榪欎釜鏁堢巼鏄緢楂樼殑銆傚彲浠ヨ繖鏍瘋錛屽浜巔hp鍐呯疆鍑芥暟錛屽叾鏁堢巼鍜岀浉搴攃鍑芥暟鍑犱箮鐩稿悓錛?br />鍞竴澶氫簡涓嬈¤漿鍙戣皟鐢ㄣ?
鍐呯疆鍑芥暟鍦╬hp涓兘鏄氳繃so鐨勬柟寮忚繘琛屽姩鎬佸姞杞斤紝鐢ㄦ埛涔熷彲浠ユ牴鎹渶瑕佽嚜宸辯紪鍐欑浉搴旂殑so錛屼篃灝辨槸鎴戜滑甯歌鐨勬墿灞曘?br />ZEND鎻愪緵浜嗕竴緋誨垪鐨刟pi渚涙墿灞曚嬌鐢紝涓嬮潰鏄痬ysqli_real_query鍑芥暟鐨凜鍑芥暟瀹炵幇錛?br />php-5.3.8\php-5.3.8\ext\mysqli\mysqli_api.c
PHP_FUNCTION(mysqli_real_query)
{
MY_MYSQL *mysql;
zval *mysql_link;
char *query = NULL;
int query_len;
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
MYSQLI_DISABLE_MQ; /* disable multi statements/queries */
if (mysql_real_query(mysql->mysql, query, query_len)) {
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
RETURN_FALSE;
}
if (!mysql_field_count(mysql->mysql)) {
if (MyG(report_mode) & MYSQLI_REPORT_INDEX) {
php_mysqli_report_index(query, mysqli_server_status(mysql->mysql) TSRMLS_CC);
}
}
RETURN_TRUE;
}
鍜屽唴緗嚱鏁扮浉姣旓紝鐢ㄦ埛閫氳繃php瀹炵幇鐨勮嚜瀹氫箟鍑芥暟鍏鋒湁瀹屽叏涓嶅悓鐨勬墽琛岃繃紼嬪拰瀹炵幇鍘熺悊銆傚鍓嶆枃鎵榪幫紝
鎴戜滑鐭ラ亾php浠g爜鏄緲昏瘧鎴愪負浜嗕竴鏉℃潯opcode鏉ユ墽琛岀殑錛岀敤鎴峰嚱鏁頒篃涓嶄緥澶栵紝瀹為檯涓瘡涓嚱鏁板搴斿埌涓緇刼pcode錛?br />榪欑粍鎸囦護琚繚瀛樺湪zend_function涓備簬鏄紝鐢ㄦ埛鍑芥暟鐨勮皟鐢ㄦ渶緇堝氨鏄搴斿埌涓緇刼pcodes鐨勬墽琛屻?
瀵逛簬鏍堢殑緇存姢錛寊end鍦ㄨ繖閲屽仛浜嗕紭鍖栥傞鍏堝垎閰嶄竴涓暱搴︿負N鐨勯潤鎬佹暟緇勬潵妯℃嫙鍫嗘爤錛?br />榪欑閫氳繃闈欐佹暟緇勬潵妯℃嫙鍔ㄦ佹暟鎹粨鏋勭殑鎵嬫硶鍦ㄦ垜浠嚜宸辯殑紼嬪簭涓篃緇忓父鏈変嬌鐢紝榪欑鏂瑰紡閬垮厤浜嗘瘡嬈¤皟鐢ㄥ甫鏉ョ殑鍐呭瓨鍒嗛厤銆侀攢姣併?br />ZEND鍙槸鍦ㄥ嚱鏁拌皟鐢ㄧ粨鏉熸椂灝嗗綋鍓嶆爤欏剁殑絎﹀彿琛ㄦ暟鎹甤lean鎺夊嵆鍙?br />鍥犱負闈欐佹暟緇勯暱搴︿負N錛屼竴鏃﹀嚱鏁拌皟鐢ㄥ眰嬈¤秴榪嘚錛岀▼搴忎笉浼氬嚭鐜版爤婧㈠嚭錛岃繖縐嶆儏鍐典笅zend灝變細榪涜絎﹀彿琛ㄧ殑鍒嗛厤銆侀攢姣侊紝鍥犳浼氬鑷存ц兘涓嬮檷寰堝銆?br />鍦▃end閲岄潰錛孨鐩墠鍙栧兼槸32銆傚洜姝わ紝鎴戜滑緙栧啓php紼嬪簭鐨勬椂鍊欙紝鍑芥暟璋冪敤灞傛鏈濂戒笉瑕佽秴榪?2銆?br />褰撶劧錛屽鏋滄槸web搴旂敤錛屾湰韜彲浠ュ嚱鏁拌皟鐢ㄥ眰嬈$殑娣卞害銆?
铏界劧鍑芥暟鍚嶉暱搴﹀鎬ц兘鏈変竴瀹氬獎鍝嶏紝浣嗗叿浣撴湁澶氬ぇ鍛紵榪欎釜闂搴旇榪樻槸闇瑕佺粨鍚堝疄闄呮儏鍐墊潵鑰冭檻錛屽鏋滀竴涓嚱鏁版湰韜瘮杈冨鏉傜殑璇濓紝
閭d箞瀵規(guī)暣浣撶殑鎬ц兘褰卞搷騫朵笉澶с?br />涓涓緩璁槸瀵逛簬閭d簺浼氳皟鐢ㄥ緢澶氭錛屾湰韜姛鑳藉張姣旇緝綆鍗曠殑鍑芥暟錛屽彲浠ラ傚綋鍙栦竴浜涜█綆鎰忚祬鐨勫悕瀛椼?
鍦╬hp涓紝鏈夎繖鏍蜂竴浜涘嚱鏁幫紝瀹冧滑鍦ㄤ嬌鐢ㄤ笂鏄爣鍑嗙殑鍑芥暟鐢ㄦ硶錛屼絾搴曞眰瀹炵幇鍗村拰鐪熸鍑芥暟璋冪敤瀹屽叏涓嶅悓錛岃繖浜涘嚱鏁頒笉灞炰簬鍓嶆枃鎻愬埌鐨勪笁縐峟unction涓殑浠諱綍涓綾伙紝
鍏跺疄璐ㄦ槸涓鏉″崟鐙殑opcode錛岃繖閲屼及涓斿彨鍋氫吉鍑芥暟鎴栬呮寚浠ゅ嚱鏁般?
濡備笂鎵璇達紝浼嚱鏁頒嬌鐢ㄨ搗鏉ュ拰鏍囧噯鐨勫嚱鏁板茍鏃犱簩鑷達紝鐪嬭搗鏉ュ叿鏈夌浉鍚岀殑鐗瑰緛銆備絾鏄粬浠渶緇堟墽琛岀殑鏃跺欐槸琚珃end鍙嶆槧鎴愪簡涓鏉″搴旂殑鎸囦護錛坥pcode錛夋潵璋冪敤錛?br />鍥犳鍏跺疄鐜版洿鎺ヨ繎浜巌f銆乫or銆佺畻鏈繍綆楃瓑鎿嶄綔銆?
閫氳繃涓婇潰鐨勪粙緇嶅彲浠ョ湅鍑猴紝浼嚱鏁扮敱浜庤鐩存帴緲昏瘧鎴愭寚浠ゆ潵鎵ц錛屽拰鏅氬嚱鏁扮浉姣斿皯浜嗕竴嬈″嚱鏁拌皟鐢ㄦ墍甯︽潵鐨勫紑閿錛屽洜姝ゆц兘浼氭洿濂戒竴浜涖?br />鎴戜滑閫氳繃濡備笅嫻嬭瘯鏉ュ仛涓涓姣斻?Array_key_exists鍜宨sset涓よ呴兘鍙互鍒ゆ柇鏁扮粍涓煇涓猭ey鏄惁瀛樺湪錛岀湅涓涓嬩粬浠殑鎬ц兘
浠庡浘涓婂彲浠ョ湅鍑猴紝鍜宎rray_key_exists鐩告瘮錛宨sset鎬ц兘瑕侀珮鍑哄緢澶氾紝鍩烘湰鏄墠鑰呯殑4鍊嶅乏鍙籌紝鑰屽嵆浣挎槸鍜岀┖鍑芥暟璋冪敤鐩告瘮錛?br />鍏舵ц兘涔熻楂樺嚭1鍊嶅乏鍙熾傜敱姝や篃渚ч潰鍗拌瘉鍐嶆璇存槑浜唒hp鍑芥暟璋冪敤鐨勫紑閿榪樻槸姣旇緝澶х殑銆?