Szukaj…


Uwagi

Stałe magiczne są rozróżniane według ich formy __CONSTANTNAME__ .

Obecnie istnieje osiem magicznych stałych, które zmieniają się w zależności od miejsca ich użycia. Na przykład wartość __LINE__ zależy od linii użytej w skrypcie.

Te specjalne stałe nie uwzględniają wielkości liter i są następujące:

Nazwa Opis
__LINE__ Aktualny numer wiersza pliku.
__FILE__ Pełna ścieżka i nazwa pliku z dowiązaniami symbolicznymi zostały rozwiązane. Jeśli zostanie zastosowany w pliku dołączanym, zwracana jest nazwa dołączonego pliku.
__DIR__ Katalog pliku. Jeśli zostanie zastosowany w pliku include, zwrócony zostanie katalog dołączonego pliku. Jest to równoważne dirname(__FILE__) . Ta nazwa katalogu nie ma ukośnika końcowego, chyba że jest to katalog główny.
__FUNCTION__ Nazwa bieżącej funkcji
__CLASS__ Nazwa klasy. Nazwa klasy obejmuje przestrzeń nazw, w której została zadeklarowana (np. Foo\Bar ). W przypadku metody cechy __CLASS__ jest nazwą klasy, w której używana jest cecha.
__TRAIT__ Nazwa cechy. Nazwa cechy obejmuje przestrzeń nazw, w której została zadeklarowana (np. Foo\Bar ).
__METHOD__ Nazwa metody klasy.
__NAMESPACE__ Nazwa bieżącego obszaru nazw.

Najczęstszym przypadkiem użycia tych stałych jest debugowanie i rejestrowanie

Różnica między __FUNCTION__ a __METHOD__

__FUNCTION__ zwraca tylko nazwę funkcji, podczas gdy __METHOD__ zwraca nazwę klasy wraz z nazwą funkcji:

<?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

Różnica między __CLASS__, get_class () i get_called_class ()

__CLASS__ magiczna stała zwraca ten sam wynik co get_class() wywołana bez parametrów i obie zwracają nazwę klasy, w której została zdefiniowana (tj. Gdzie napisałeś wywołanie funkcji / stałą nazwę).

W przeciwieństwie do tego, get_class($this) i get_called_class() zwrócą nazwę rzeczywistej klasy, która została utworzona:

<?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

Stałe plików i katalogów

Aktualny dokument

Możesz uzyskać nazwę bieżącego pliku PHP (ze ścieżką bezwzględną), używając magicznej stałej __FILE__ . Jest to najczęściej używane jako technika rejestrowania / debugowania.

echo "We are in the file:" , __FILE__ , "\n";

Aktualny katalog

Aby uzyskać bezwzględną ścieżkę do katalogu, w którym znajduje się bieżący plik, użyj magicznej stałej __DIR__ .

echo "Our script is located in the:" , __DIR__ , "\n";

Aby uzyskać bezwzględną ścieżkę do katalogu, w którym znajduje się bieżący plik, użyj dirname(__FILE__) .

echo "Our script is located in the:" , dirname(__FILE__) , "\n";

Pobieranie bieżącego katalogu jest często używane przez frameworki PHP do ustawienia katalogu podstawowego:

// 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;

Separatory

System Windows doskonale rozumie ścieżki / in, więc DIRECTORY_SEPARATOR jest używany głównie podczas analizowania ścieżek.

Oprócz magicznych stałych PHP dodaje także stałe stałe do pracy ze ścieżkami:

  • DIRECTORY_SEPARATOR stała do oddzielania katalogów na ścieżce. Ma wartość / on * nix, a \ w systemie Windows. Przykład z widokami można przepisać za pomocą:
$view = 'page';
$viewFile = BASEDIR . DIRECTORY_SEPARATOR .'views' . DIRECTORY_SEPARATOR . $view;
  • Rzadko używana stała PATH_SEPARATOR do oddzielania ścieżek w zmiennej środowiskowej $PATH . To jest ; w systemie Windows : inaczej


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow