// der php hacker

// archiv

It’s magic: Magische Konstanten in PHP

Geschrieben am 14. Apr 2009 von Cem Derin

PHP hat so eine besondere Eigenart: Magie. Das klingt jetzt romantisch verklärter als es eigentlich ist. Gemeint sind damit im Grunde besondere Schlüsselwörter, Funktionen und Methoden, die nicht so arbeiten, wie es ihre Artgenossen tun würden. In meiner kleinen dreiteiligen Artikelreihe möchte ich auf die drei großen magischen Bereiche innerhalb von PHP eingehen.

Was Konstanten sind, weiß eigentlich jeder von uns. Wo eine Variable variabel ist und sich ändern kann, ist eine Konstante eben konstant. Ein weiterer Unterschied ist, dass Konstanten nicht mit einem Dollar-Zeichen beginnen. Zuguterletzt ist eine Konstante immer global verfügbar (es sei denn es handelt sich um eine Klassenkonstante).

Magische Konstanten innerhalb von PHP haben eine dieser Eigenschaften nicht: Sie sind durchaus variabel. Ihr Inhalt hängt davon ab, wo sie aufgerufen werden. Folgende magische Konstanten sind in PHP verfügbar.

__CLASS__

Enthält den Namen der Klasse, in der die Konstante verwendet wird. Außerhalb einer Klasse ist diese Konstante leer.

__COMPILER_HALT_OFFSET__

Enthält das Byte, an dem die magische Funktion __halt_compiler() aufgerufen wurde. Wird diese Funktion nicht aufgerufen, so ist diese Konstante nicht leer, sondern gar nicht erst gesetzt! Bei der Verwendung dieser Konstante muss also zunächst geprüft werden, ob diese definiert ist!

__DIR__

Enthält den Pfad zur Datei ohne den Dateinamen, in dem die Konstante verwendet wird. Diese magische Konstante wurde mit PHP 5.3 eingeführt.

__FILE__

Enthält den Namen der Datei inklusive Pfad, in der die Konstante verwendet wird.

__FUNCTION__

Enthält den Namen der Funktion, in der die Konstante verwendet wird. Funktioniert auch bei Methoden, allerdings wird der Klassenname dabei nicht ermittelt. Außerhalb einer Funktion oder Methode ist diese Konstante leer.

__LINE__

Enthält die Nummer der Zeile, in der die Konstante verwendet wird

__METHOD__

Enthält den Namen der Klasse und der Methode, in der die Konstante verwendet wird. Funktioniert auch in Funktionen, enthält hier jedoch nur den Funktionsnamen. Außerhalb von Funktionen oder Methoden ist diese Konstante leer.

__NAMESPACE__

Enthält den Namespace, in dem die Konstante verwendet wird. Diese magische Konstante wurde mit PHP 5.3 eingeführt.

 

Im nächsten Teil sind dann die magischen Funktionen dran. Und ja, mir ist klar, dass das für viele von euch nichts neues ist, aber wir wollen doch auch mal ein bisschen die Anfänger bedienen ;-)

#001
15. Apr 2009

[...] in PHP doch einige magische Dinge. Im zweiten Teil meiner kleinen Artikelreihe möchte ich nach den magischen Konstanten auf die magischen Funktionen [...]


#002
16. Apr 2009

Ein toller Beitrag. Schön wäre vielleicht noch wie man diese Konstanten sinnvoll verwenden kann.
Mit der Konstante __COMPILER_HALT_OFFSET__ kann ich jetzt spontan nichts anfangen.

Gruß
Thomas


#003
16. Apr 2009
unset

Du wirst sicherlich den trackback zum zweiten Teil bemerkt haben. Dort erkläre ich die korrespondierende Funktion … Da wird der Sinn dann auch klarer. Trotzdem danke für das Lob :)

#004
20. Apr 2009

[...] den ersten zwei Teilen meiner Miniserie über die magischen Eigenschaften von PHP bin ich auf die magischen Konstanten und magischen Funktionen eingagangen. Im dritte und letzten Teil werde ich die magischen Methoden [...]

// kommentieren

// senden
theme von mir, software von wordpress, grid von 960 grid system. funktioniert in allen browsern, aber der safari bekommt das mit der schrift am schönsten hin.