php用const出錯是什麼原因

silencement
發布: 2023-02-25 10:12:01
原創
2799 人瀏覽過

php用const出錯是什麼原因

大家都知道define是定義常數的,如果在類別中定義常數呢?當然不能用define,而用const,如下例:

<?php
//在类外面通常这样定义常量
define("PHP","phpernote.com");
class MyClass{
    //常量的值将始终保持不变。在定义和使用常量的时候不需要使用$符号
    const constant = &#39;constant value&#39;;
    function showConstant() {
        echo  self::constant;
    }
} 
echo MyClass::constant;
 
$classname = "MyClass";
echo $classname::constant; // PHP 5.3.0之后
 
$class = new MyClass();
$class->showConstant();
echo $class::constant; // PHP 5.3.0之后

print_r(get_defined_constants()); //可以用get_defined_constants()获取所有定义的常量
登入後複製

一般是define在類別外定義常數,const在類別內定義常數:並且const必須透過類別名稱::變數名稱來存取。但是php5.3以上支援類別外透過const定義常數,看如下,這樣是ok的:

const a = "abcdef";
echo a;
登入後複製

關於常數的基礎知識,這裡不說了,除了以上,define和const的其它區別(摘自網路):

1.const不能再條件語句中定義常數,但是define是可以的,如下:

if(1){
    const a = &#39;java&#39;;
}
echo a;  //必错
登入後複製

2.const採用一個普通的常數名稱,define可以採用表達式作為名稱

const  FOO = &#39;PHP&#39;;
for ($i = 0; $i < 32; ++$i) { 
    define(&#39;PHP_&#39; . $i, 1 << $i); 
}
登入後複製

3.const只能接受靜態的標量,而define可以採用任何表達式。

const PHP = 1 << 5;    // 错误
define(&#39;PHP&#39;, 1 << 5); // 正确
登入後複製

4.const本身就是一個語言結構。而define是一個函數。所以使用const速度要快的多。

關於php中const和define的差別就總結這麼多了。

以上是php用const出錯是什麼原因的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板