Heim  >  Artikel  >  Backend-Entwicklung  >  Beschreiben Sie const und definieren Sie Konstanten in PHP

Beschreiben Sie const und definieren Sie Konstanten in PHP

韦小宝
韦小宝Original
2018-03-05 15:13:281861Durchsuche

Wir alle wissen, wie PHP Konstanten definiert, wenn wir die Grundlagen von PHP kennen. PHP hat zwei Möglichkeiten, Konstanten zu definieren, eine ist const und die andere ist define, also lasst uns darüber reden. Ich kenne den Unterschied zwischen const und define nicht!

Wie wir alle wissen, können wir in PHP (PHP 4 und höher) die Funktion define() verwenden, um Konstanten zu definieren, zum Beispiel:

<?php
define(&#39;PI&#39;, 3.14159);  //定义一个名为PI的常量
echo PI;    //输出:3.14159
?>

Aber nach PHP 5.3. 0, außer Zusätzlich zur Verwendung der Funktion define() können wir auch das PHP-Schlüsselwort const verwenden, um Konstanten zu definieren.

Zum Beispiel:

<?php
//以下代码需在PHP 5.3.0及之后的版本中运行
const PI = 3.14159; //使用const关键字定义一个名为PI的常量
echo PI;    //输出:3.14159
?>

Obwohl beide oben genannten Methoden Konstanten definieren können, was sind die Unterschiede zwischen ihnen? Lassen Sie uns nacheinander den Unterschied zwischen der Funktion define() und dem Schlüsselwort const in PHP zum Definieren von Konstanten erklären:

1 Versionsunterschiede
Zunächst besteht kein Zweifel Es gibt Versionsunterschiede zwischen den Methoden zum Definieren von Konstanten. Die Funktion define() kann sowohl in PHP4 als auch in PHP5 verwendet werden, und das Schlüsselwort const kann nur in PHP 5.3.0 und späteren Versionen verwendet werden.

2. Unterschiede in den Definitionspositionen
Da die durch die Funktion define() definierten Konstanten definiert werden, wenn die Funktion define() ausgeführt wird, können sie innerhalb der Funktion platziert werden. innerhalb der Schleife, wenn Verwenden Sie die Funktion define(), um Konstanten überall dort zu definieren, wo eine Funktion innerhalb einer Anweisung aufgerufen werden kann. Im Gegensatz zu define() muss sich die durch das Schlüsselwort const definierte Konstante im obersten Bereich befinden, da die durch das Schlüsselwort const definierte Konstante zur Kompilierungszeit definiert wird. Dies bedeutet auch, dass const nicht zum Definieren von Konstanten innerhalb von Funktionen, Schleifen und if-Anweisungen verwendet werden kann.

<?php
//使用const关键字定义常量必须处于最顶端的作用区域
//也就是可以在编译时直接解析定义的地方
const DEMO = &#39;DEMO&#39;;
class Person{
    const MAN = &#39;男&#39;;
    const WOMAN = &#39;女&#39;;
}
interface USB{
    const VERSION_2 = &#39;2.0&#39;;
    const VERSION_3 = &#39;3.0&#39;;
}
?>

3. Unterschiede in der Unterstützung von Wertausdrücken
Obwohl die durch die Schlüsselwörter const und define() definierten konstanten Werte nur Null- oder Skalardaten (boolesch) sein können , Integer-, Float- und String-Typen) und Ressourcentypen (es wird nicht empfohlen, Konstanten von Ressourcentypen zu definieren, da sonst unvorhersehbare Ergebnisse auftreten können). Da die durch das Schlüsselwort const definierte Konstante jedoch zur Kompilierungszeit definiert wird, unterstützt der Ausdruck des durch das Schlüsselwort const definierten Konstantenwerts keine arithmetischen Operatoren, bitweisen Operatoren und Vergleichsoperatoren und andere Operatoren, und diese Operatoren können direkt beim Definieren von Konstanten in der Funktion define() verwendet werden.

<?php
define(&#39;DEFINE_VAR1&#39;, 1 << 1);
//const CONST_VAR1 = (1 << 1); //const不支持位运算符,PHP会报语法错误

define(&#39;DEFINE_VAR2&#39;, 1 + 1);
//const CONST_VAR2 = 1 + 1 ; //const不支持算术运算符,PHP会报语法错误

define(&#39;DEFINE_VAR3&#39;, 1 == 1);
//const CONST_VAR3 = 1 == 1 ; //const不支持比较运算符,PHP会报语法错误

$value = 3;
define(&#39;DEFINE_VAR4&#39;, $value);
//const CONST_VAR4 = $value ; //const不支持变量形式的值,PHP会报语法错误

define(&#39;DEFINE_VAR5&#39;, true || false);
//const CONST_VAR5 = true || false ; //const不支持逻辑运算符,PHP会报语法错误

define(&#39;DEFINE_VAR6&#39;, &#39;Hello&#39;.&#39; World!&#39;);
//const CONST_VAR6 = &#39;Hello&#39;.&#39; World!&#39; ; //const不支持字符串运算符,PHP会报语法错误

class User{ 
}$user = new User();define(&#39;DEFINE_VAR7&#39;, $user instanceof User);
//const CONST_VAR7 = $user instanceof User ; //const不支持类型运算符,PHP会报语法错误
?>

4. Unterschiede bei der Unterstützung der Groß-/Kleinschreibung
Zusätzlich zu den oben genannten 3 Unterschieden gibt es auch einen weniger auffälligen Unterschied. Die Funktion define() kann den dritten Parameter empfangen. Wenn dieser Parameter wahr ist, bedeutet dies, dass beim Konstantennamen die Groß-/Kleinschreibung nicht beachtet wird. Die Verwendung des Schlüsselworts const zum Definieren von Konstanten bietet jedoch keine ähnliche Funktionalität.

<?php
//设置编码为UTF-8,以避免中文乱码
header(&#39;Content-Type:text/html;charset=utf-8&#39;);

//define()的第3个参数为true时,表示大小写不敏感
define(&#39;SITE_NAME&#39;, &#39;CodePlayer&#39;, true);
echo SITE_NAME; //输出:CodePlayer
echo site_name; //输出:CodePlayer
echo SiTe_NamE; //输出:CodePlayer

const DOMAIN_NAME = &#39;365mini.com&#39;;
echo DOMAIN_NAME;   //输出:365mini.com
echo domain_name;   //PHP提示常量未定义
echo DomaIN_nAMe;   //PHP提示常量未定义
?>

Man weiß es nicht, wenn man es nicht sieht! Auf den ersten Blick gibt es ganz schön viele Unterschiede!

Verwandte Empfehlungen:

Detaillierte Erläuterung des Unterschieds zwischen PHP-Konstanten define und const

Das obige ist der detaillierte Inhalt vonBeschreiben Sie const und definieren Sie Konstanten in PHP. 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