PHP基礎之流程控制7——declare語句
(PHP 4, PHP 5)
declare?結構用來設定一段代碼的執行指令。declare?的語法和其它流程控制結構相似:
declare (directive) statement
directive?部分允許設定?declare?代碼段的行為。目前只認識兩個指令:ticks以及?encoding。
Note:?encoding 是 PHP 5.3.0 新增指令。
declare?代碼段中的?statement?部分將被執行——怎樣執行以及執行中有什么副作用出現取決于?directive?中設定的指令。
declare?結構也可用于全局范圍,影響到其后的所有代碼(但如果有?declare?結構的文件被其它文件包含,則對包含它的父文件不起作用)。
<?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?代碼段中解釋器每執行?N?條可計時的低級語句就會發生的事件。N?的值是在?declare?中的?directive?部分用?ticks=N?來指定的。
不是所有語句都可計時。通常條件表達式和參數表達式都不可計時。
在每個 tick 中出現的事件是由?register_tick_function()?來指定的。更多細節見下面的例子。注意每個 tick 中可以出現多個事件。
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當和命名空間結合起來時 declare 的唯一合法語法是?declare(encoding=’...’);,其中?...?是編碼的值。而?declare(encoding=’...’) {}?將在與命名空間結合時產生解析錯誤。在 PHP 5.3 中除非在編譯時指定了?--enable-zend-multibyte,否則 declare 中的 encoding 值會被忽略。
注意除非用?phpinfo(),否則 PHP 不會顯示出是否在編譯時指定了?--enable-zend-multibyte。
相關文章: