ホームページ  >  記事  >  バックエンド開発  >  PHP定数を定義するにはどのような方法がありますか?

PHP定数を定義するにはどのような方法がありますか?

藏色散人
藏色散人オリジナル
2019-11-09 11:33:564491ブラウズ

PHP定数を定義するにはどのような方法がありますか?

PHP 定数を定義する方法は何ですか?

PHP では、define() と const を使用できます。 . 定数を定義する方法。

しかし、開発では、定数を定義するためにどのようなときにdefine()を使用する必要がありますか?また、定数を定義するためにどのようなときにconstを使用する必要があるのでしょうか?定数を定義するこれら 2 つの方法の主な違いは何ですか?

バージョン 5.3 以降、PHP には、const キーワードまたはdefine() メソッドを使用して定数を定義する 2 つの方法があります。

const FOO = 'BAR';
define('FOO', 'BAR');

2 つの最大の違いは、const がコンパイルされることです。 定数の定義一方、define() メソッドは実行時に定数を定義します。

const は if ステートメントでは使用できませんが、defne() は if ステートメントで使用できます。

 if(...) {
     const FOO = 'BAR';//错误
 }
 if(...) {
     define('FOO', 'BAR');//正确
 }

define() 一般的なシナリオは、定数を定義する前に、その定数が定義されているかどうかをまず確認することです。

 if(defined('FOO)) {
     define('FOO', 'BAR')
 }

const 定数を定義する場合、値は次のようになります。静的スカラー (数値、文字列、true、false、null) のみであり、define() メソッドは任意の式の値を定数の値として使用できます。 PHP 5.6 以降、const では式を定数の値として使用することもできます。

const BIT_5 = 1 << 5; //PHP5.6后支持,之前的PHP版本不支持
define(&#39;BIT_5&#39;, 1 << 5);// 所有PHP版本都支持

const は単純な定数名のみを許可しますが、define() は任意の式の値を定数名として使用できます

for ($i = 0; $i < 32; $i++) {
    define(&#39;BIT_&#39; . $i, 1 << $i);
}

const 定義された定数名は大文字と小文字が区別されます。定数は、define() メソッドの 3 番目のパラメータに true を渡すことで定義できます。

define(&#39;FOO&#39;, &#39;BAR&#39;, true);
echo FOO; //BAR
echo foo; //BAR

上に挙げたのは、define() と比較した const のいくつかの欠点または柔軟性の低さです。定数を定義するために、define() の代わりに const を使用することを私が個人的に推奨する理由を見てみましょう (定数を定義する必要がある場合を除く)上記のシナリオ)。

const は読みやすさに優れており、const は関数ではなく言語構造であり、クラス内でクラス定数を定義する形式と一致しています。

const は現在の名前空間の定数を定義します。同様の効果を実現するために、定義するときに、define() は完全な名前空間名を渡す必要があります。

namespace A\B\C;
//To define the constant A\B\C\FOO:
const FOO = &#39;BAR&#39;;
define(&#39;A\B\C\FOO&#39;, &#39;BAR&#39;);

const は、PHP5.6 バージョン以降で利用可能です。配列を次のように使用します。 PHP 7.0 以降、define() は定数値としての配列の使用のみをサポートします。

const FOO = [1, 2, 3];// valid in PHP 5.6
define(&#39;FOO&#39;, [1, 2, 3]);// invalid in PHP 5.6, valid in PHP 7.0

const は言語構造であり、定数はコンパイル時に定義されるため、const はdefine() よりもわずかに高速になります。

define() を使用して多数の定数を定義すると、PHP が効率に影響を与えることはよく知られています。人々は、define() によって引き起こされる効率の問題を回避するために apc_load_constants() と Hidef を発明しました。

最後に、const はクラスやインターフェイスの定数を定義するためにも使用できますが、define() はグローバル名前空間内の定数を定義するためにのみ使用できます:

class FOO
{
    const BAR = 2;// 正确
}
class Baz
{
    define(&#39;QUX&#39;, 2)// 错误
}

概要:

if 分岐で定数を定義したり、式の値で定数に名前を付けたりする場合を除き、その他の場合 (コードを読みやすくするためでも)、define( の代わりに const を使用することをお勧めします。 )。

推奨: 「PHP チュートリアル

以上がPHP定数を定義するにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。