ホームページ  >  記事  >  バックエンド開発  >  PHPのdefineとconstの違いは何ですか? (詳しい説明)

PHPのdefineとconstの違いは何ですか? (詳しい説明)

不言
不言転載
2019-01-07 11:13:383943ブラウズ

この記事の内容は、phpのdefineとconstの違いは何ですか? (詳しい説明)は一定の参考値があるので、困っている友達は参考にしていただければ幸いです。

PHP で定数を定義するには、define と const の 2 つの方法があります。この 2 つの違いは何ですか?

const CONSTANCE = 'const';
define('CONSTANCE',  'const');

const キーワードは、PHP 5.3 以降、クラス定義の外で定数を定義できます。

const はクラス内で定義できますが、define は定義できません。
const で定義された定数は現在の名前空間にあり、define は実行用の名前空間を定義するために特定の名前空間を記述する必要があります。

class Foo {
    const BAR = 2;
}


class Foo2 {
    define("BAR", 3); //无效的
}

//命名空间的示例
namespace A{
    const A1 = 1; //处在命名空间A中
    define('A2',  2); //全局可调用
    define('A\A3', 3); //处在命名空间A中
}

namespace B{
    use const \A\A1;
    use const \A\A3;
    
    echo A1;
    echo A2; //全局调用
    echo A3;
}

const はコンパイル段階で定数を定義し、define は前処理段階で定数を定義します。

const はコンパイル段階で定数を定義し、最終状態である必要があります。定数の定義。アクションの最上位領域。
そのため、if などの条件文では定義できません。

define は、マクロ定義とも呼ばれる定数を定義します。マクロは、事前定義された一連のルールに従って特定のテキスト パターンを置き換えるものとして説明できます。
define はブランチ内に存在できます。

理論的には、const を使用した方が、定義するよりも少し速くなります。

const はスカラー データ (整数、文字列、ブール値、浮動小数点数など) のみを受け入れますが、define は任意の式を受け入れることができます

define('BIT_5',   1<<5); 
const BIT_5 =     1<<5; //5.6之后才有效
PHP 5.6 以降では、 const は配列と式も受け入れることができます
defineresource 型を受け入れることができますが、const

できません

#const 定数名には単純な文字のみを使用できます。define には任意の式を使用できます。

const STR = 'string';
$i = 1;
define("STR_" . $i,  STR);
const は大文字と小文字を区別します。define は 3 番目のパラメータを通じて大文字と小文字の区別を制御できます。

その他のいくつかの質問

const と define で定義された定数配列は、その中の要素を変更できますか?

const で定義された定数を確認するために、define を使用できますか?

以上がPHPのdefineとconstの違いは何ですか? (詳しい説明)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。