PHP基礎(chǔ)之流程控制7——declare語句
(PHP 4, PHP 5)
declare?結(jié)構(gòu)用來設(shè)定一段代碼的執(zhí)行指令。declare?的語法和其它流程控制結(jié)構(gòu)相似:
declare (directive) statement
directive?部分允許設(shè)定?declare?代碼段的行為。目前只認(rèn)識兩個指令:ticks以及?encoding。
Note:?encoding 是 PHP 5.3.0 新增指令。
declare?代碼段中的?statement?部分將被執(zhí)行——怎樣執(zhí)行以及執(zhí)行中有什么副作用出現(xiàn)取決于?directive?中設(shè)定的指令。
declare?結(jié)構(gòu)也可用于全局范圍,影響到其后的所有代碼(但如果有?declare?結(jié)構(gòu)的文件被其它文件包含,則對包含它的父文件不起作用)。
<?php//?these?are?the?same://?you?can?use?this:declare(ticks=1)?{????//?entire?script?here}//?or?you?can?use?this:declare(ticks=1);//?entire?script?here?>TicksTick(時鐘周期)是一個在?declare?代碼段中解釋器每執(zhí)行?N?條可計時的低級語句就會發(fā)生的事件。N?的值是在?declare?中的?directive?部分用?ticks=N?來指定的。
不是所有語句都可計時。通常條件表達(dá)式和參數(shù)表達(dá)式都不可計時。
在每個 tick 中出現(xiàn)的事件是由?register_tick_function()?來指定的。更多細(xì)節(jié)見下面的例子。注意每個 tick 中可以出現(xiàn)多個事件。
Example #1 Tick 的用法示例
<?phpdeclare(ticks=1);//?A?function?called?on?each?tick?eventfunction?tick_handler(){????echo?'tick_handler()?calledn';}register_tick_function(’tick_handler’);$a?=?1;if?($a?>?0)?{????$a?+=?2;????print($a);}?>Example #2 Ticks 的用法示例
<?phpfunction?tick_handler(){??echo?'tick_handler()?calledn';}$a?=?1;tick_handler();if?($a?>?0)?{????$a?+=?2;????tick_handler();????print($a);????tick_handler();}tick_handler();?>參見?register_tick_function()?和?unregister_tick_function()。
Encoding可以用 encoding 指令來對每段腳本指定其編碼方式。
Example #3 對腳本指定編碼方式
<?phpdeclare(encoding=’ISO-8859-1’);//?code?here?>Caution當(dāng)和命名空間結(jié)合起來時 declare 的唯一合法語法是?declare(encoding=’...’);,其中?...?是編碼的值。而?declare(encoding=’...’) {}?將在與命名空間結(jié)合時產(chǎn)生解析錯誤。在 PHP 5.3 中除非在編譯時指定了?--enable-zend-multibyte,否則 declare 中的 encoding 值會被忽略。
注意除非用?phpinfo(),否則 PHP 不會顯示出是否在編譯時指定了?--enable-zend-multibyte。
相關(guān)文章:
