PHP
Magische Konstanten
Suche…
Bemerkungen
__CONSTANTNAME__
werden durch ihre __CONSTANTNAME__
Form unterschieden.
Derzeit gibt es acht magische Konstanten, die sich je nach Einsatzort ändern. Der Wert von __LINE__
hängt beispielsweise von der Zeile ab, in der er in Ihrem Skript verwendet wird.
Diese speziellen Konstanten unterscheiden nicht zwischen Groß- und Kleinschreibung und lauten wie folgt:
Name | Beschreibung |
---|---|
__LINE__ | Die aktuelle Zeilennummer der Datei. |
__FILE__ | Der vollständige Pfad und Dateiname der Datei mit aufgelösten Symlinks. Bei Verwendung in einem Include wird der Name der eingeschlossenen Datei zurückgegeben. |
__DIR__ | Das Verzeichnis der Datei. Bei Verwendung in einem Include wird das Verzeichnis der enthaltenen Datei zurückgegeben. Dies ist gleichbedeutend mit dirname(__FILE__) . Dieser Verzeichnisname hat keinen abschließenden Schrägstrich, sofern es sich nicht um das Stammverzeichnis handelt. |
__FUNCTION__ | Der aktuelle Funktionsname |
__CLASS__ | Der Klassenname Der Klassenname enthält den Namespace, in dem er deklariert wurde (z. B. Foo\Bar ). Bei Verwendung in einer Trait-Methode ist __CLASS__ der Name der Klasse, in der das Trait verwendet wird. |
__TRAIT__ | Name der Eigenschaft Der Merkmalname enthält den Namespace, in dem er deklariert wurde (z. B. Foo\Bar ). |
__METHOD__ | Der Name der Klassenmethode. |
__NAMESPACE__ | Der Name des aktuellen Namespaces. |
Der häufigste Anwendungsfall für diese Konstanten ist das Debuggen und Protokollieren
Unterschied zwischen __FUNCTION__ und __METHOD__
__FUNCTION__
gibt nur den Namen der Funktion zurück, wohingegen __METHOD__
den Namen der Klasse zusammen mit dem Namen der Funktion zurückgibt:
<?php
class trick
{
public function doit()
{
echo __FUNCTION__;
}
public function doitagain()
{
echo __METHOD__;
}
}
$obj = new trick();
$obj->doit(); // Outputs: doit
$obj->doitagain(); // Outputs: trick::doitagain
Unterschied zwischen __CLASS__, get_class () und get_called_class ()
__CLASS__
magic-Konstante gibt das gleiche Ergebnis wie die get_class()
Funktion zurück, die ohne Parameter aufgerufen wird, und beide geben den Namen der Klasse zurück, in der sie definiert wurden (dh, wo Sie den Funktionsaufruf / den konstanten Namen geschrieben haben).
Im Gegensatz dazu geben die Funktionen get_class($this)
und get_called_class()
die Namen der tatsächlichen Klasse zurück, die instanziiert wurde:
<?php
class Definition_Class {
public function say(){
echo '__CLASS__ value: ' . __CLASS__ . "\n";
echo 'get_called_class() value: ' . get_called_class() . "\n";
echo 'get_class($this) value: ' . get_class($this) . "\n";
echo 'get_class() value: ' . get_class() . "\n";
}
}
class Actual_Class extends Definition_Class {}
$c = new Actual_Class();
$c->say();
// Output:
// __CLASS__ value: Definition_Class
// get_called_class() value: Actual_Class
// get_class($this) value: Actual_Class
// get_class() value: Definition_Class
Datei- und Verzeichniskonstanten
Aktuelle Datei
Sie können den Namen der aktuellen PHP-Datei (mit dem absoluten Pfad) mit der magischen Konstante __FILE__
. Dies wird meistens als Protokollierungs- / Debugging-Verfahren verwendet.
echo "We are in the file:" , __FILE__ , "\n";
Aktuelles Verzeichnis
Um den absoluten Pfad zu dem Verzeichnis zu erhalten, in dem sich die aktuelle Datei befindet, verwenden Sie die magische Konstante __DIR__
.
echo "Our script is located in the:" , __DIR__ , "\n";
Um den absoluten Pfad zu dem Verzeichnis zu erhalten, in dem sich die aktuelle Datei befindet, verwenden Sie den Verzeichnisnamen dirname(__FILE__)
.
echo "Our script is located in the:" , dirname(__FILE__) , "\n";
Das aktuelle Verzeichnis wird häufig von PHP-Frameworks verwendet, um ein Basisverzeichnis festzulegen:
// index.php of the framework
define(BASEDIR, __DIR__); // using magic constant to define normal constant
// somefile.php looks for views:
$view = 'page';
$viewFile = BASEDIR . '/views/' . $view;
Separatoren
Das Windows-System versteht die Pfade
/
in perfekt, sodass derDIRECTORY_SEPARATOR
hauptsächlich beim Analysieren von Pfaden verwendet wird.
Neben magischen Konstanten fügt PHP auch einige feste Konstanten für das Arbeiten mit Pfaden hinzu:
-
DIRECTORY_SEPARATOR
Konstante zum Trennen von Verzeichnissen in einem Pfad. Nimmt Wert/
on * nix und\
unter Windows. Das Beispiel mit Ansichten kann wie folgt überschrieben werden:
$view = 'page';
$viewFile = BASEDIR . DIRECTORY_SEPARATOR .'views' . DIRECTORY_SEPARATOR . $view;
- Selten verwendete
PATH_SEPARATOR
Konstante zum Trennen von Pfaden in der Umgebungsvariablen$PATH
. Es ist;
unter Windows:
sonst