PHP const 和 defind 的區別

2021-08-03 10:10:15 字數 1814 閱讀 1862

相同點:兩者都能定義常量

const  foo =『bar『;

defind(『foo『,『bar『);

const

defind

1(位置) 必須宣告在top-level-scopc (頂級域)

無限制2

表示式) 接受乙個靜態的標量型別(number,string,true.false,null,file,……)

接受任何表示式

3(常量名)接受乙個plain(?不知道翻譯成啥,就是常量名稱固定的意思)常量名

接受任何表示式作為常量名

4(常量名)區別大小寫

允許不區別大小寫(第三個引數傳遞true

// 1

if(condition) const foo =『bar『; //未定義

if(condition) defind(『foo『,『bar『); //定義

if (!defined(『foo『)) define

(『foo『, 『bar『);

// 2

const bit_5 =

1<<

5; // php 5.6之後 valid ,之前 invalid

define

(『bit_5『, 1

<<

5); // always valid

// 3

for ($i

=0; $i

<

32; ++

$i)

// 4

define

(『foo『,『bar『,true);

1. 易讀。是乙個語言結構,不是乙個方法,也可以在類中使用定義常量。

2. 可以在當前命名空間定義常量,但是define()必須傳遞完整的命名空間名稱。

(乙個可以是相對的,乙個必須是絕對的)

namespace a\b

\c;// to define the constant a\b

\c\foo:

const foo = 『bar『;

define(『a\b

\c\foo『, 『bar『);

3. 定義常量值可以使用陣列,const(php 5.6 後),defind(php 7後)

const foo = [1, 2, 3];    // valid in

php5.6

define(『foo『, [1, 2, 3]); // invalid in

php5.6, valid in

php7.0

4. const 比 defind 快 : const(語言結構)定義於編譯時,defind定義於執行時

5. 類中定義常量, const可以,defind不支援

class

foo

// but

class

baz

php const和define的區別

大家都知道define是定義常量的,如果在類中定義常量呢?當然不能用define,而用const,如下例 php 在類外面通常這樣定義常量 define php phpddt.com class myclass echo myclass constant classname myclass echo...

php const和define的區別

1 const用於類成員變數的定義,一經定義,不可修改。define不可用於類成員變數的定義,可用於全域性常量。2 const可在類中使用,php5.3以後類外邊也可以,define不能。class test function a t new test t a 輸出 notice use of un...

和 區別和聯絡, 和 區別和聯絡

和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...