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 der DIRECTORY_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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow