php——21-關鍵詞 const(執行效率比 define 可能更高) define
阿新 • • 發佈:2018-12-13
語法及注意點
- const 定義常量語法:const 常量識別符號 = 常量值;
- const 關鍵字一般在類的聲明裡定義常量時使用;在 PHP 5.3.0 以後,可以使用 const 關鍵字在類定義的外部定義常量。
- const 定義的常量預設為大小寫敏感。通常常量識別符號總是大寫的,而且也建議在開發過程中使用大寫
const 與 define 都可以定義常量,他們的區別是:
- const 一般用於類成員變數的定義,一經定義,不可修改。define 不可用於類成員變數的定義,一般用於定義全域性常量。
- const 不能在條件語句中定義常量
- const 採用一個普通的常量名稱,define 可以採用表示式作為名稱
- const 只能接受靜態的標量,而 define 可以採用任何表示式
- const 定義的常量大小寫敏感,而 define 可通過第三個引數(為true表示大小寫不敏感)來指定大小寫是否敏感
<?php
const TEST='test';//外部const定義 //等同 define('TEST','test'); 但一般推薦用在類內部
class Person
{
const NAME = 'tom';
const name = 'john';//不建議使用小寫定義常量
public function test()
{
//呼叫方法與靜態屬性相同
echo self::NAME . '<br>';//tom
echo self::name . '<br>';//john //區分大小寫
echo TEST . '<br>';//test //外部定義的 const 內部也可以呼叫
}
}
$cc = new Person();
$cc->test();
//外部也可以呼叫類內部定義的 const 常量
echo Person::NAME . '<br>';//tom
define 不可用於類成員變數的定義,一般用於定義全域性常量。
<?php
define('TEST', 'test');//函式 //建議定義全域性的常量
const TEST1 = 'test1';//結構 //建議定義類內部的常量
class Test
{
//define('TEST2', 'test2');//報錯 //類內部不能使用 define
public function tt()
{
echo TEST . '<br>';//test
echo TEST1 . '<br>';//test1
}
}
$cc = new Test();
$cc->tt();
const 不能在條件語句中定義常量
<?php
$i = 10;
if ($i < 15) {
define('AGE', 12);
// const AGE1 = '20'; //報錯,條件語句內部不可以 const 定義常量
}
echo AGE . '<br>';//12
// echo AGE1 . '<br>';
const 採用一個普通的常量名稱,define 可以採用表示式作為名稱
<?php
$n = 'TT' . mt_rand(1, 999);//mt_rand 用於在傳入兩個值中獲取隨機值
define($n, 12);
echo constant($n);//12
//const $n=123;//報錯//const 採用一個普通的常量名稱,define 可以採用表示式作為名稱
只能接受靜態的標量,而 define 可以採用任何表示式
<?php
//const TT = (1 + 2).mt_rand(1,100);
define('TT1', (1 + 2).mt_rand(1,100));
//echo TT . '<br>';//報錯 //只能接受靜態的標量,而 define 可以採用任何表示式
echo TT1 . '<br>';//384
而 define 可通過第三個引數(為true表示大小寫不敏感)來指定大小寫是否敏感
<?php
define('Name','tom',true);//傳入 true 來不區分大小寫(預設區分)
echo Name.'<br>';//tom
echo namE.'<br>';//tom