ホームページ > バックエンド開発 > PHPの問題 > PHPがconst errorを使用する理由は何ですか?

PHPがconst errorを使用する理由は何ですか?

silencement
リリース: 2023-02-25 10:12:01
オリジナル
2833 人が閲覧しました

PHPがconst errorを使用する理由は何ですか?

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 による定数の定義がサポートされています。以下のように、これで問題ありません。

const a = "abcdef";
echo a;
ログイン後にコピー

ここでは定数に関する基礎知識には触れません。他にも、define と const の間には違いがあります (Network から抜粋):

1.const は条件文で定数を定義できませんが、次のように定義できます:

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 errorを使用する理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート