define が定数を定義することは誰もが知っていますが、クラス内で定数を定義するとどうなるでしょうか?もちろん、define は使用できませんが、次の例のように const を使用します。
<?php //在类外面通常这样定义常量 define("PHP","phpernote.com"); class MyClass{ //常量的值将始终保持不变。在定义和使用常量的时候不需要使用$符号 const constant = 'constant value'; 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 による定数の定義がサポートされています。以下のように、これで問題ありません。
const a = "abcdef"; echo a;
ここでは定数に関する基礎知識には触れません。他にも、define と const の間には違いがあります (Network から抜粋):
1.const は条件文で定数を定義できませんが、次のように定義できます:
if(1){ const a = 'java'; } echo a; //必错
2.const は通常の定数を使用します。定数名、define は式を使用できます。
const FOO = 'PHP'; for ($i = 0; $i < 32; ++$i) { define('PHP_' . $i, 1 << $i); }
3.const は名前として静的スカラーのみを受け入れることができますが、define は任意の式を受け取ることができます。
const PHP = 1 << 5; // 错误 define('PHP', 1 << 5); // 正确
4.const 自体が言語構造です。そしてdefineは関数です。したがって、const を使用する方がはるかに高速です。
phpにおけるconstとdefineの違いについては以上です。
以上がPHPがconst errorを使用する理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。