首頁  >  文章  >  後端開發  >  php--declare語句

php--declare語句

伊谢尔伦
伊谢尔伦原創
2016-11-24 09:14:571504瀏覽

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

Ticks

Tick(時鐘週期)是一個在 declare 代碼段中解釋器每執行 N 條可計時的低階語句就會發生的事件。 N 的值是在 declare 中的 directive 部分以 ticks=N 來指定的。

不是所有語句都可計時。通常條件表達式和參數表達式都不可計時。

在每個 tick 中出現的事件是由 register_tick_function() 來指定的。更多細節請見下面的例子。注意每個 tick 中可以出現多個事件。

Example #1 Tick 的用法範例

<?php
declare(ticks=1);
// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called\n";
}
register_tick_function(&#39;tick_handler&#39;);
$a = 1;
if ($a > 0) {
    $a += 2;
    print($a);
}
?>

Example #2 Ticks 的用法範例

<?php
function tick_handler()
{
  echo "tick_handler() called\n";
}
$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 對腳本指定編碼方式

declare(encoding='ISO-8859-1');
// code here
?>Caution當和命名空間結合起來唯一時的唯一時法律語法是 declare(encoding='...');,其中 ... 是編碼的值。而 declare(encoding='...') {} 將在與命名空間結合時產生解析錯誤。


在 PHP 5.3 中除非在編譯時指定了 --enable-zend-multibyte,否則 declare 中的 encoding 值會被忽略。

注意除非用 phpinfo(),否則 PHP 不會顯示是否在編譯時指定了 --enable-zend-multibyte。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn