Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erklärung des Unterschieds zwischen const und define in PHP

Detaillierte Erklärung des Unterschieds zwischen const und define in PHP

Dec 18, 2019 pm 04:13 PM
const define

Detaillierte Erklärung des Unterschieds zwischen const und define in PHP

Verfügbar beim Definieren von Konstanten in PHP Was ist der Unterschied zwischen const und define?

1. const wird zum Definieren von Klassenmitgliedsvariablen verwendet. Sobald sie definiert sind, kann ihr Wert nicht geändert werden. define definiert globale Konstanten, auf die überall zugegriffen werden kann.

2. define kann nicht in einer Klasse definiert werden, aber const muss in einer Klasse definiert werden, und auf die durch const definierten Variablen muss über Klassenname::Variablenname zugegriffen werden.

3. Konstanten können nicht in bedingten Anweisungen definiert werden.

4. const verwendet einen gewöhnlichen Konstantennamen (statischer Skalar) und define kann einen beliebigen Ausdruck als Namen verwenden.

5. const unterscheidet immer zwischen Groß- und Kleinschreibung, jedoch kann define() über den dritten Parameter Konstanten definieren, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird.

6. Die Verwendung von const ist einfach und leicht zu lesen, und die Verwendung von const zum Definieren ist viel schneller als das Definieren zur Kompilierzeit.

Wenn Sie Konstanten in einer Klasse definieren, können Sie nicht define, sondern const verwenden, wie im folgenden Beispiel:

Empfohlen: „PHP-Tutorial

<?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()获取所有定义的常量
?>
Nach dem Login kopieren

Im Allgemeinen definiert define Konstanten außerhalb der Klasse, const definiert Konstanten innerhalb der Klasse und auf const muss über Klassenname::Variablenname zugegriffen werden. PHP5.3 und höher unterstützen jedoch die Definition von Konstanten außerhalb von Klassen durch const. Siehe Folgendes:

<?php
   const a = "abcdef";
   echo a;
?>
Nach dem Login kopieren

Was die Grundkenntnisse von Konstanten betrifft, werde ich hier nicht näher darauf eingehen. Darüber hinaus sind define und const weitere Unterschiede (aus dem Internet):

1.const kann keine Konstanten in bedingten Anweisungen definieren, aber define ist wie folgt möglich:

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

2.const verwendet einen gewöhnlichen Konstantennamen, define kann einen Ausdruck als Namen annehmen

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

3.const kann nur statische Skalare akzeptieren, während define jeden Ausdruck annehmen kann.

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

4.const selbst ist eine Sprachstruktur. Und define ist eine Funktion. Die Verwendung von const ist also viel schneller.

Die beiden haben etwas gemeinsam: Beide können nicht neu zugeordnet werden.

Der folgende Inhalt ist ein Auszug aus dem Blogbeitrag von Rotted_Pencil: Der Unterschied zwischen der Definition von Konstanten in PHP, define() vs. const

Vorwort

Lesen Ich habe es heute noch einmal auf Stackoverflow gelesen und bin auf einen sehr interessanten Artikel gestoßen, also habe ich ihn übersetzt und zur Hand genommen. Der Artikel wurde von NikiC, einem der PHP-Entwicklungsmitglieder, geschrieben und seine Autorität ist zweifellos

Text

In PHP5.3 gibt es zwei Möglichkeiten, Konstanten zu definieren:

1. Verwenden Sie das Schlüsselwort const

2. Verwenden Sie die Methode define()

const FOO = ‘BAR’; 
define(‘FOO’,’BAR’);
Nach dem Login kopieren

Der grundlegende Unterschied zwischen den beiden Methoden besteht darin, dass const beim Kompilieren des Codes eine Konstante definiert, während define will Eine Konstante wird definiert, wenn der Code ausgeführt wird. Dies führt dazu, dass const die folgenden Nachteile hat:

const kann nicht in bedingten Anweisungen verwendet werden. Wenn Sie eine globale Variable definieren möchten, muss sich const auf der äußersten Ebene des gesamten Codes befinden:

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

Sie fragen sich vielleicht, warum ich das tun möchte? Eines der häufigsten Beispiele ist die Überprüfung, ob eine Konstante definiert wurde:

if (!defined(&#39;FOO&#39;)) {
    define(&#39;FOO&#39;, &#39;BAR&#39;);
}
Nach dem Login kopieren

const kann nur zum Deklarieren von Variablen (z. B. Zahlen, Zeichenfolgen oder wahr, falsch, null, DATEI) verwendet werden. und define() kann auch Ausdrücke akzeptieren. Ab PHP5.6 kann const jedoch auch konstante Ausdrücke akzeptieren:

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

consts Konstantenbenennung kann nur einfachen Text verwenden, während define() Ihnen die Verwendung eines beliebigen Ausdrucks zur Konstantenbenennung ermöglicht. Dadurch können wir Folgendes tun:

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

const-definierte Konstanten unterscheiden zwischen Groß- und Kleinschreibung, aber define ermöglicht es Ihnen, die Groß-/Kleinschreibung zu deaktivieren, indem Sie den dritten Parameter auf true setzen:

define(&#39;FOO&#39;, &#39;BAR&#39;, true);
echo FOO; // BAR
echo foo; // BAR
Nach dem Login kopieren

The Oben sind die Punkte aufgeführt, auf die Sie achten müssen. Deshalb erkläre ich nun Folgendes, warum ich persönlich immer const verwende, wenn die oben genannten Situationen nicht betroffen sind:

const ist lesbarer und schöner.

const definiert standardmäßig Konstanten im aktuellen Namespace, und die Verwendung von define erfordert, dass Sie den vollständigen Pfad des gesamten Namespace schreiben:

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

Seit PHP5.6 können auch const-Arrays definiert werden eine Konstante. Define unterstützt diese Funktion derzeit nicht, aber diese Funktion wird in PHP7 implementiert:

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

Da const während der Kompilierung ausgeführt wird, ist es schneller als define.

Besonders wenn Sie define zum Definieren einer großen Anzahl von Konstanten verwenden, läuft PHP sehr langsam. Man hat sogar Dinge wie apc_load_constantshide erfunden, um dieses Problem zu vermeiden

Im Vergleich zu define kann const die Effizienz der Definition von Konstanten verdoppeln (auf einem mit XDebug konfigurierten Entwicklungscomputer ist dieser Unterschied sogar noch größer). In Bezug auf die Abfragezeit gibt es jedoch keinen Unterschied zwischen den beiden (da beide dieselbe Abfragetabelle verwenden).

Das Letzte, was zu beachten ist, ist, dass const in Klassen und Schnittstellen verwendet werden kann, während define dies ist Wer Das geht nicht:

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

Zusammenfassung

Es sei denn, Sie müssen Ausdrücke verwenden oder Konstanten in bedingten Anweisungen definieren, verwenden Sie const besser nur aus Gründen der einfachen Lesbarkeit des Codes!

Weitere PHP-bezogene Kenntnisse finden Sie auf der PHP-Chinese-Website!

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds zwischen const und define in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

defineSo definieren Sie mehrzeilige Makros defineSo definieren Sie mehrzeilige Makros Oct 11, 2023 pm 01:24 PM

define definiert ein mehrzeiliges Makro, indem es „do { \ printf("%d\n", x \ } while (0)“ zur Definition in mehrere Zeilen aufteilt. In einer Makrodefinition muss der Backslash „\“ das letzte Zeichen der Makrodefinition sein und darf weder Leerzeichen noch Kommentare enthalten. Wenn Sie „\“ zur Zeilenfortsetzung verwenden, achten Sie darauf, dass der Code lesbar bleibt und stellen Sie sicher, dass am Ende jeder Zeile ein „\“ steht.

Entdecken Sie die Bedeutung und Rolle der Definitionsfunktion in PHP Entdecken Sie die Bedeutung und Rolle der Definitionsfunktion in PHP Mar 19, 2024 pm 12:12 PM

Die Bedeutung und Rolle der Definitionsfunktion in PHP 1. Grundlegende Einführung in die Definitionsfunktion In PHP ist die Definitionsfunktion eine Schlüsselfunktion zum Definieren von Konstanten. Konstanten ändern ihre Werte während der Ausführung des Programms nicht. Mit der Funktion „Definieren“ definierte Konstanten können im gesamten Skript aufgerufen werden und sind global. 2. Die Syntax der Definitionsfunktion Die grundlegende Syntax der Definitionsfunktion lautet wie folgt: define("Konstantenname",Konstantenwert&qu

Tiefes Verständnis von const in der C-Sprache Tiefes Verständnis von const in der C-Sprache Feb 18, 2024 pm 12:56 PM

Ausführliche Erklärung und Codebeispiele von const in C. In der C-Sprache wird das Schlüsselwort const zum Definieren von Konstanten verwendet, was bedeutet, dass der Wert der Variablen während der Programmausführung nicht geändert werden kann. Mit dem Schlüsselwort const können Variablen, Funktionsparameter und Funktionsrückgabewerte geändert werden. Dieser Artikel bietet eine detaillierte Analyse der Verwendung des Schlüsselworts const in der C-Sprache und stellt spezifische Codebeispiele bereit. const modifizierte Variable Wenn const zum Ändern einer Variablen verwendet wird, bedeutet dies, dass die Variable eine schreibgeschützte Variable ist und nicht geändert werden kann, sobald ihr ein Wert zugewiesen wurde. Zum Beispiel: constint

defineSo definieren Sie die bedingte Kompilierung defineSo definieren Sie die bedingte Kompilierung Oct 11, 2023 pm 01:20 PM

Die defineConditional-Kompilierung kann mithilfe der Vorverarbeitungsanweisungen „#ifdef“, „#ifndef“, „#if“, „#elif“, „#else“ und „#endif“ erreicht werden.

Lassen Sie uns über die Unterschiede zwischen var, let und const sprechen (Codebeispiel) Lassen Sie uns über die Unterschiede zwischen var, let und const sprechen (Codebeispiel) Jan 06, 2023 pm 04:25 PM

Dieser Artikel vermittelt Ihnen relevantes Wissen über JavaScript. Er stellt Ihnen hauptsächlich die Unterschiede zwischen var, let und const sowie die Beziehung zwischen ECMAScript und JavaScript vor. Ich hoffe, es ist hilfreich für alle.

So verwenden Sie const in der C-Sprache So verwenden Sie const in der C-Sprache Sep 20, 2023 pm 01:34 PM

const ist ein Schlüsselwort, das zum Deklarieren von Konstanten, const-Modifikatoren in Funktionsparametern, const-modifizierten Funktionsrückgabewerten und const-modifizierten Zeigern verwendet werden kann. Detaillierte Einführung: 1. Das Schlüsselwort const kann zum Deklarieren von Konstanten verwendet werden. Der Wert der Konstante kann während der Ausführung des Programms nicht geändert werden. Zeichen usw. oder ein benutzerdefinierter Datentyp; 2. Der const-Modifikator in den Funktionsparametern. Das Schlüsselwort const kann in den Parametern der Funktion verwendet werden, was angibt, dass der Parameter innerhalb der Funktion usw. nicht geändert werden kann.

18 Möglichkeiten, das Problem zu beheben, dass der Audiodienst unter Windows 11 nicht reagiert 18 Möglichkeiten, das Problem zu beheben, dass der Audiodienst unter Windows 11 nicht reagiert Jun 05, 2023 pm 10:23 PM

Für die Audioausgabe und -eingabe sind bestimmte Treiber und Dienste erforderlich, damit sie unter Windows 11 wie erwartet funktionieren. Manchmal treten im Hintergrund Fehler auf, die zu Audioproblemen wie fehlender Audioausgabe, fehlenden Audiogeräten, verzerrtem Audio usw. führen. So beheben Sie, dass der Audiodienst unter Windows 11 nicht reagiert. Wir empfehlen Ihnen, mit den unten genannten Korrekturen zu beginnen und sich durch die Liste zu arbeiten, bis Sie Ihr Problem gelöst haben. Der Audiodienst reagiert unter Windows 11 aus verschiedenen Gründen möglicherweise nicht mehr. Mithilfe dieser Liste können Sie die meisten Probleme überprüfen und beheben, die verhindern, dass Audiodienste unter Windows 11 reagieren. Bitte befolgen Sie die entsprechenden Abschnitte unten, um Ihnen durch den Prozess zu helfen. Methode 1: Starten Sie den Audiodienst neu

C++-Syntaxfehler: Const-Objekte müssen bei der Definition initialisiert werden, wie geht man damit um? C++-Syntaxfehler: Const-Objekte müssen bei der Definition initialisiert werden, wie geht man damit um? Aug 22, 2023 am 09:13 AM

Für C++-Programmierer gehören Syntaxfehler zu den häufigsten Problemen. Einer der häufigsten Fehler besteht darin, dass const-Objekte zum Zeitpunkt der Definition initialisiert werden müssen. Wenn Sie auf diese Situation stoßen, wie sollten Sie damit umgehen? Zuerst müssen wir verstehen, was ein const-Objekt ist. Das Schlüsselwort const ist ein spezieller Typqualifizierer in C++, der angibt, dass der Wert einer Variablen während der Ausführung des Programms nicht geändert werden kann. Solche Variablen werden „Konstanten“ genannt. Wenn Sie ein const-Objekt definieren, ohne es zu initialisieren, tritt der obige Fehler auf. Das ist

See all articles