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

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

藏色散人
藏色散人Original
2019-11-09 11:33:564562Durchsuche

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');

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');//正确
 }

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

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

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版本都支持

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);
}

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

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;);

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

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)// 错误
}

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!

Stellungnahme:
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