検索
ホームページバックエンド開発PHPチュートリアルPHPのconstとdefineの違いを詳しく解説

PHPのconstとdefineの違いを詳しく解説

PHP で定数を定義するときに使用できます。 constとdefineの違いは?

1. Const はクラスのメンバー変数の定義に使用され、一度定義すると値を変更することはできません。 define は、どこからでもアクセスできるグローバル定数を定義します。

2.define はクラス内で定義できませんが、const はクラス内で定義する必要があり、const で定義された変数にはクラス名::変数名を通じてアクセスする必要があります。

3. const 定数は条件文では定義できません。

4. const は通常の定数名 (静的スカラー) を使用し、define は任意の式を名前として使用できます。

5. const は常に大文字と小文字を区別しますが、define() は 3 番目のパラメータを使用して大文字と小文字を区別しない定数を定義できます。

6. const の使用はシンプルで読みやすいです。const はそれ自体が言語構造であり、define はメソッドです。const を使用して定義する方が、コンパイル時に定義するよりもはるかに高速です。

クラスで定数を定義する場合、次の例のように、define は使用できませんが、const を使用してください。


推奨: "

PHP チュートリアル "

<?php
//在类外面通常这样定义常量
define("PHP","111cn.net");
class MyClass
{
    //常量的值将始终保持不变。在定义和使用常量的时候不需要使用$符号
    const constant = &#39;constant value&#39;;

    function showConstant() {
        echo  self::constant . "<br>";
    }
}

echo MyClass::constant . "<br>";

$classname = "MyClass";
echo $classname::constant . "<br>"; // PHP 5.3.0之后

$class = new MyClass();
$class->showConstant();
echo $class::constant."<br>"; // PHP 5.3.0之后
//print_r(get_defined_constants());  //可以用get_defined_constants()获取所有定义的常量
?>

通常、define はクラス外の定数を定義し、const はクラス内の定数を定義します。const にはクラス名::変数名を通じてアクセスする必要があります。ただし、php5.3 以降では、const によるクラス外の定数の定義がサポートされています。次を参照してください。これで問題ありません:

<?php
   const a = "abcdef";
   echo a;
?>

ここでは、定数に関する基本的な知識には触れません。上記のdefineとconstは別物です 違い(インターネットとの):

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

<?php
if(1){
   const a = &#39;java&#39;;
 }    
echo a;  //必错
?>

2.const は通常の定数 name を使用します。define は式を名前として取ることができます。

<?phpconst  FOO = &#39;PHP&#39;; 
for ($i = 0; $i < 32; ++$i) { 
    define(&#39;PHP_&#39; . $i, 1 << $i); 
} 
?>

3.const は静的スカラーのみを受け入れることができますが、define は任意の式を受け取ることができます。

<?php
const PHP = 1 << 5; // 错误
define(&#39;PHP&#39;, 1 << 5); // 正确 
?>

4.const 自体が言語構造です。そしてdefineは関数です。したがって、const を使用する方がはるかに高速です。

この 2 つは共通点があります。どちらも再割り当てできないということです。

次の内容は Rotted_Pencil のブログ投稿からの抜粋です: PHP での定数の定義、define() と const の違い

序文

Read今日もStackoverflowでとても興味深い記事を見つけたので翻訳して取り上げてみました。この記事は、PHP 開発メンバーの 1 人である NikiC によって書かれたもので、その権威は疑いの余地がありません。

本文

PHP5.3 では、定数を定義する方法が 2 つあります:

1. const キーワードを使用します

2. define() メソッドを使用します

const FOO = ‘BAR’; 
define(‘FOO’,’BAR’);

2 つのメソッドの根本的な違いは、const はコードのコンパイル時に定数を定義するのに対し、const は define() メソッドを使用することです。 will 定数はコードの実行時に定義されます。このため、const には次のような欠点があります。

const は条件文で使用できません。グローバル変数を定義したい場合は、const をコード全体の最も外側のレベルに置く必要があります。

if (...) {    
    const FOO = &#39;BAR&#39;;    // 无效的
}
// but
if (...) {
   define(&#39;FOO&#39;, &#39;BAR&#39;); // 有效的
}

なぜこれを行うのか疑問に思われるかもしれません。最も一般的な例の 1 つは、定数が定義されているかどうかを確認する場合です。

if (!defined(&#39;FOO&#39;)) {
    define(&#39;FOO&#39;, &#39;BAR&#39;);
}

const は、変数 (数値、文字列、または true、false、null、FILE など) を宣言するためにのみ使用できます。また、define() は式を受け入れることもできます。ただし、PHP5.6 以降では、const は定数式も受け入れることができます:


const BIT_5 = 1 << 5;    // 在PHP5.6之后有效,之前无效
define(&#39;BIT_5&#39;, 1 << 5); // 一直有效

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

以上が注意すべき点となります。そこで、私が個人的に上記の状況に関係なく常に const を使用する理由を以下に説明します。

const はより読みやすく、美しいです。

const はデフォルトで現在の名前空間で定数を定義します。define を使用するには、名前空間全体のフルパスを指定する必要があります。

namespace A\B\C; 
// 如果要定义常量 A\B\C\FOO: 
const FOO = ‘BAR’; 
define(‘A\B\C\FOO’, ‘BAR’);

PHP5.6 以降、const 配列も定義できます。は定数です。現在、define はこの関数をサポートしていませんが、この関数は PHP7 で実装される予定です:

const FOO = [1, 2, 3];    // 在PHP 5.6中有效 
define(‘FOO’, [1, 2, 3]); // 在PHP 5.6无效, 在PHP 7.0有效

const はコンパイル中に実行されるため、define よりも高速です。

特に、define を使用して多数の定数を定義する場合、PHP の実行が非常に遅くなります。この問題を回避するために、apc_load_constantshide のようなものを発明した人もいます。

define と比較して、const は定数定義の効率を 2 倍にすることができます (XDebug で構成された開発マシンでは、この差はさらに大きくなります)。ただし、クエリ時間の点では、この 2 つに違いはありません (両方とも同じクエリ テーブルを使用するため)

最後に注意すべき点は、const はクラスとインターフェイスで使用できるのに対し、define はクラスとインターフェイスで使用できることです。これはできません:

class Foo {
    const BAR = 2; // 有效
}
class Baz {
    define(&#39;QUX&#39;, 2); // 无效
}

概要

条件文で式を使用したり定数を定義したりする必要がある場合を除き、コードを読みやすくするために const を使用することをお勧めします。

PHP 関連の知識の詳細については、PHP 中国語 Web サイト をご覧ください。

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

声明
この記事は博客园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール