Heim > Backend-Entwicklung > PHP-Problem > Welche Möglichkeiten gibt es, PHP-Konstanten zu definieren?

Welche Möglichkeiten gibt es, PHP-Konstanten zu definieren?

藏色散人
Freigeben: 2023-02-28 13:14:01
Original
4619 Leute haben es durchsucht

Welche Möglichkeiten gibt es, PHP-Konstanten zu definieren?

Wie kann ich PHP-Konstanten definieren?

In PHP gibt es zwei Möglichkeiten, () zu definieren. und const Möglichkeit, Konstanten zu definieren.

Aber wann sollten wir in der Entwicklung define() verwenden, um Konstanten zu definieren, und wann sollten wir const verwenden, um Konstanten zu definieren? Was ist der Hauptunterschied zwischen diesen beiden Arten der Definition von Konstanten?

Ab Version 5.3 verfügt PHP über zwei Möglichkeiten, Konstanten zu definieren, indem das Schlüsselwort const oder die Methode define() verwendet wird:

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

Der größte Unterschied zwischen den beiden besteht darin, dass const kompiliert wird, um Konstanten zu definieren zur Laufzeit, während die Methode define() Konstanten zur Laufzeit definiert.

const kann nicht in if-Anweisungen verwendet werden, defne() kann in if-Anweisungen verwendet werden. Ein häufiges Szenario für

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

define() besteht darin, zunächst festzustellen, ob die Konstante definiert wurde, bevor die Konstante definiert wird:

 if(defined('FOO)) {
     define('FOO', 'BAR')
 }
Nach dem Login kopieren

const Beim Definieren einer Konstante der Wert kann nur ein statischer Skalar sein (Zahl, Zeichenfolge, wahr, falsch, null), und die Methode define() kann den Wert eines beliebigen Ausdrucks als Wert einer Konstante verwenden. Ab PHP 5.6 ermöglicht const auch die Verwendung von Ausdrücken als Wert von Konstanten.

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

const erlaubt nur einfache Konstantennamen, während define() den Wert eines beliebigen Ausdrucks als Konstantennamen verwenden kann

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

const Der definierte Konstantenname unterscheidet zwischen Groß- und Kleinschreibung. Unempfindliche Konstanten können definiert werden, indem true an den dritten Parameter der Methode define() übergeben wird.

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

Die oben aufgeführten Mängel oder die Inflexibilität von const im Vergleich zu define() werfen wir einen Blick darauf, warum ich persönlich die Verwendung von const anstelle von define() zum Definieren von Konstanten empfehle (es sei denn, Sie müssen Konstanten in definieren). die oben aufgeführten Szenarien).

const ist besser lesbar, const ist eine Sprachstruktur und keine Funktion und stimmt mit der Form der Definition von Klassenkonstanten in einer Klasse überein.

const definiert Konstanten im aktuellen Namespace, und define() muss beim Definieren den vollständigen Namespace-Namen übergeben, um ähnliche Effekte zu erzielen:

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;);
Nach dem Login kopieren

const ist ab der PHP5.6-Version verfügbar. Verwenden Sie Arrays als konstante Werte, und define() unterstützt erst ab PHP 7.0 die Verwendung von Arrays als konstante Werte.

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
Nach dem Login kopieren

Da const eine Sprachstruktur ist und Konstanten zur Kompilierzeit definiert werden, ist const etwas schneller als define().

Es ist bekannt, dass PHP die Effizienz beeinträchtigt, nachdem eine große Anzahl von Konstanten mit define() definiert wurde. Die Leute haben apc_load_constants() und hidef erfunden, um die durch define() verursachten Effizienzprobleme zu umgehen.

Schließlich kann const auch zum Definieren von Konstanten in Klassen und Schnittstellen verwendet werden, und define() kann nur zum Definieren von Konstanten im globalen Namespace verwendet werden:

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

Zusammenfassung:

Es sei denn, Sie möchten eine Konstante in einem if-Zweig definieren oder eine Konstante nach dem Wert eines Ausdrucks benennen. In anderen Fällen (auch für eine einfache Lesbarkeit des Codes) wird empfohlen, const anstelle von define( zu verwenden. ).

Empfohlen: „PHP-Tutorial

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, PHP-Konstanten zu definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage