Stałe noszące miano „magicznych” w języku PHP to zbiór stałych które posiadają przedefiniowaną i niezmienną wartość, jednak jest ona określona jedynie w obrębie wykonywania danego skryptu.
Oznacza to że w przypadku innego pliku wartości poszczególnych stałych będą inne. Mało tego, niektóre z nich mogą zmieniać swą zawartość w zależności od miejsca wywołania (np.: wew. funkcji czy metody klasy).
Owe „magic constans” są jednak bardzo przydatne w programowaniu w PHP i każdy powinien je znać, aby niepotrzebnie nie wynajdywać od nowa przysłowiowego koła. Zapraszam do zapoznania się z nimi.
Dla każdej poniższej stałej, został dołączony przykład użycia wraz z wynikiem wykonania danego kodu.
__LINE__
Zawiera numer linii pliku skryptu, w której została użyta ta stała.
echo __LINE__;
2
__FILE__
Przechowuje bezwzględną ścieżkę do pliku skryptu który jest wykonywany.
echo __FILE__;
G:\Server\www\~dev\magicconstants.php
__DIR__
Przechowuje bezwzględną ścieżkę do folderu skryptu który jest wykonywany (bez slasha na końcu jeśli nie jest to folder główny – root). Stała ta dostępna jest począwszy od wersji PHP 5.3.0.
echo __DIR__;
G:\Server\www\~dev
__FUNCTION__
Nazwa funkcji w której użyta została stała.
function test_function() { return __FUNCTION__; } echo test_function();
test_function
__CLASS__, __METHOD__
Pierwsza z stałym zwraca nazwę klasy obiektu w którym została użyta. Druga natomiast, dodaje do tego ciągu dodatkowo nazwę wywołanej metody owej klasy.
class test_obj { public function test_class() { return __CLASS__; } public function test_method() { return __METHOD__; } } $test_obj = new test_obj(); echo $test_obj->test_class()."\n"; echo $test_obj->test_method();
test_obj test_obj::test_method
__NAMESPACE__
Nazwa aktualnej przestrzeni nazw – jednej z głównej nowości w PHP 5.3.0.
namespace test_namespace; echo __NAMESPACE__;
test_namespace