天天看點

PHP中的常量

    常量是一個簡單值的辨別符(名字)。如同其名稱所暗示的,在腳本執行期間該值不能改變(除了所謂的魔術常量,它們其實不是常量)。常量預設為大小寫敏感。按照慣例常量辨別符總是大寫的。常量名和其它任何 PHP 标簽遵循同樣的命名規則。合法的常量名以字母或下劃線開始,後面跟着任何字母,數字或下劃線。用正規表達式是這樣表達的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

    常量是一個簡單值的辨別符(名字)。如同其名稱所暗示的,在腳本執行期間該值不能改變(除了所謂的魔術常量,它們其實不是常量)。常量預設為大小寫敏感。按照慣例常量辨別符總是大寫的。

    常量名和其它任何 PHP 标簽遵循同樣的命名規則。合法的常量名以字母或下劃線開始,後面跟着任何字母,數字或下劃線。用正規表達式是這樣表達的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

    注: 在這裡,字母是 a-z,A-Z,以及從 127 到 255(0x7f-0xff)的 ASCII 字元。

    和 superglobals 一樣,常量的範圍是全局的。不用管作用域就可以在腳本的任何地方通路常量。有關作用得更多資訊請閱讀手冊中的變量範圍。

    文法

    可以用 define() 函數來定義常量。一個常量一旦被定義,就不能再改變或者取消定義。

    常量隻能包含标量資料(boolean,integer,float 和 string)。

    可以簡單的通過指定其名字來取得常量的值,不要在常量前面加上 $ 符号。如果常量名是動态的,也可以用函數 constant() 來讀取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量清單。

    注: 常量和(全局)變量在不同的名字空間中。這意味着例如 TRUE 和 $TRUE 是不同的。

    如果使用了一個未定義的常量,PHP 假定你想要的是該常量本身的名字,如同你用字元串調用它一樣(CONSTANT 對應 "CONSTANT")。此時将發出一個 E_NOTICE 級的錯誤。參見手冊中為什麼 $foo[bar] 是錯誤的(除非你事先用 define() 将 bar 定義為一個常量)。如果你隻想檢查是否定義了某常量,用 defined() 函數。

    常量和變量不同:

    常量前面沒有美元符号($);

    常量隻能用 define() 函數定義,而不能通過指派語句;

    常量可以不用理會變量範圍的規則而在任何地方定義和通路;

    常量一旦定義就不能被重新定義或者取消定義;

    常量的值隻能是标量。

     定義常量

    <?php
    define("CONSTANT", "Hello world.");
    echo CONSTANT; // outputs "Hello world."
    echo Constant; // outputs "Constant" and issues a notice.
    ?>
          

    預定義常量

    PHP 向它運作的任何腳本提供了大量的預定義常量。不過很多常量都是由不同的擴充庫定義的,隻有在加載了這些擴充庫時才會出現,或者動态加載後,或者在編譯時已經包括進去了。

    有四個魔術常量根據它們使用的位置而改變。例如 __LINE__ 的值就依賴于它在腳本中所處的行來決定。這些特殊的常量不區分大小寫,如下:

    幾個 PHP 的“魔術常量”

    __LINE__ 檔案中的目前行号。 

    __FILE__ 檔案的完整路徑和檔案名。