Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse des Unterschieds zwischen benutzerdefinierten PHP-Konstanten und Klassenkonstanten

Analyse des Unterschieds zwischen benutzerdefinierten PHP-Konstanten und Klassenkonstanten

伊谢尔伦
伊谢尔伦Original
2017-06-29 10:16:561469Durchsuche

1. Angepasste Konstante

Der Wert einer Konstante kann nur skalare Daten sein (boolean, Ganzzahl, Float und Zeichenfolge) oder null.

Sobald eine Konstante definiert ist, kann sie nicht neu definiert oder aufgehoben werden.

verfügt über zwei Definitionsmethoden:

  • Verwenden Sie die Funktion define(), um Konstanten zu definieren

define('STATUS', 3); // Wenn der dritte Parameter auf true gesetzt ist, wird die Groß-/Kleinschreibung nicht beachtet

echo STATUS;

  • Verwenden Sie das Schlüsselwort const, um Konstanten zu definieren

const NAME = 4;

echo NAME;

Sie können auch die Funktion constant() verwenden, um den Wert der Konstante zu erhalten.

Verwenden Sie die Funktion define() , um zu prüfen, ob eine Konstante mit einem bestimmten Namen existiert.


2. Klassenkonstanten

Sie können Konstanten in Klassen definieren. Der Wert einer Konstante muss ein fester Wert sein und darf keine Variable, kein Klassenattribut oder das Ergebnis anderer Operationen (z. B als Funktionsaufrufe). Aber in PHP5.6 wurden Konstanten erweitert, um konstante Berechnungen zu ermöglichen und die Verwendung von Ausdrücken Ergebnissen mit Zahlen, ZeichenfolgenLiteralwerten und Konstanten zur Definition von Konstanten zu ermöglichen . Der Wert einer Konstante kann auch ein Array sein, jedoch keine Variable.

Nur das Schlüsselwort const kann zum Definieren von Klassenkonstanten verwendet werden.

class MyClass {
    const AB = 2;
    public function showConstant(){
        echo self::AB;
    }
}
echo MyClass::AB;
$obj = new MyClass();
$obj -> showConstant();
MyClass::showConstant();
$className = 'MyClass';
echo $className::AB;
Beispiel:

/**
 * 1、define(name,value,case_insensitive) 自定义全局常量, 默认大小写敏感
 * 2、const 定义类常量。
 * 3、常量名前不要使用”$”
 * 4、常量的命名一般全部使用大写字母。
 */
//定义全局常量 LANGUAGE
define('LANGUAGE','中国');
echo language;//language
echo LANGUAGE;//中国
//定义全局常量 CN
define('CN','中国',TRUE);
echo CN;//中国
echo cn;//中国
//定义类常量
class ConstTest{
const VERSION = '1.0';
function ConstTest(){
//类内部使用“self::常量名”调用,不能使用$this
echo 'self::VERSION='.self::VERSION;
}
}
//实例化 ConstTest,目的是调用构造函数
new ConstTest();
//外部调用类常量,通过“类名::常量名”直接调用,无需实例化。
echo 'VERSION='.(ConstTest::VERSION);
echo &#39;<br>&#39;;
//array get_defined_constants ([ bool $categorize = false ] ) 返回所有已定义的常量
//print_r(get_defined_constants(true));
//bool defined ( string $name ) 检查该名称的常量是否已定义。
echo defined(&#39;cn&#39;)?&#39;true&#39;:&#39;false&#39;;
Druckergebnis:

Das obige ist der detaillierte Inhalt vonAnalyse des Unterschieds zwischen benutzerdefinierten PHP-Konstanten und Klassenkonstanten. 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