it-swarm.com.de

Ändern Sie den Wert einer zuvor definierten Konstante

Ich habe eine Konstante in PHP definiert, z.

define('CONSTANT_NAME', 'constant_value');

Ich möchte in der Lage sein, den Wert dieser Konstante später im Code zu ändern.

Kann das gemacht werden? Wenn das so ist, wie?

18
Carl Thomas

Von http://php.net/manual/de/function.define.php (Schwerpunkt liegt bei mir):

define - Definiert eine benannte Konstante

Von http://www.php.net/manual/de/language.constants.php :

Wie der Name vermuten lässt, kann sich dieser Wert während der Ausführung des Skripts nicht ändern

27

Es ist möglich, definition neu zu deklarieren, wenn es zuvor als case_insensitive-Konstante (3. Parameter) definiert wurde.

Sehen:

$ php -r "define('TEST','foo',true); var_dump(TEST); define('TEST','bar'); var_dump(TEST);"
string(3) "foo"
string(3) "bar"

Getestet mit PHP CLI 5.2.6 und 5.5.3.

14
kenorb

Sie haben keine Variable erstellt, sondern eine Konstante. Der Punkt einer Konstanten ist, dass sie nicht geändert werden können.

Sie sollten stattdessen eine echte Variable verwenden.

Nun, es gibt eine Möglichkeit, zuvor definierte Konstanten zu ändern. Dazu müssen Sie die Runkit-Erweiterung PHP aktivieren: http://php.net/manual/de/function.runkit-constant-redefine.php

Die Erweiterung Runkit bietet Möglichkeiten zum Ändern von Konstanten, benutzerdefinierten Funktionen und benutzerdefinierten Klassen. Es bietet auch benutzerdefinierte Superglobale Variablen und einbettbare Subinterpreter über Sandboxing.

Es gibt Ihnen die Möglichkeit, jeden Aspekt zu ändern, den Sie in PHP ändern möchten. Dies ist jedoch fortgeschrittenes Zeug.

Bitte beachten Sie nicht, dass Konstanten müssen normalerweise als Konstanten definiert werden. Daher ist es wahrscheinlich in keinem Fall eine gute Idee, dies zu anderen Zwecken als dem Testen zu ändern .

0
Blackbam