czwartek,
Magiczne stałe
Niektóre elementy dostępne w języku PHP zostały przez autorów nazwane magicznymi. Wśród nich znalazły się także magiczne stałe (magic constants). Tak naprawdę nie są one stałymi, a ich wartość zależy od miejsca, w którym zostaną użyte, np. magiczna stała LINE to numer wiersza pliku gdzie nastąpiło jej wywołanie.
Nazwa | Opis |
---|---|
__LINE__ | Aktualna linia pliku. |
__FILE__ | Pełna scieżka i nazwa pliku. Jeśli plik został dołączony, zwracana jest jego nazwa. |
__DIR__ | Nazwa katalogu pliku. Jeśli plik został dołączony, zwracany jest jego katalog. |
__FUNCTION__ | Zwraca nazwę funkcji. |
__CLASS__ | Zwraca nazwę klasy. |
__TRAIT__ | Nazwa cechy, obejmuje przestrzeń nazw, w której została zadeklarowana. |
__METHOD__ | Zwraca nazwę metody. |
__NAMESPACE__ | Nazwa bieżącej przestrzeni nazw. Ta stała definiowana jest w czasie kompilacji. |
ClassName::class | W pełni kwalifikowana nazwa klasy. |
Prawdopodobnie stałe magiczne najczęściej stosowane są do debugowania i rejestrowania. Poniżej zamieszczono przykłady wywołań stałych magicznych.
Przykład nr 1
echo __LINE__;
echo __FILE__;
echo __DIR__;
Przykład nr 2
function hello($a) {
echo "Hello $a ";
echo __FUNCTION__;
}
hello('CKZiU'); // Hello CKZiU hello
Przykład nr 3
class Test
{
function fname()
{
echo __FUNCTION__;
}
function mname()
{
echo __METHOD__;
}
function cname()
{
echo __CLASS__;
}
}
$obj = new Test();
$obj->cname(); // Test
$obj->fname(); // fname
$obj->mname(); // Test::mname
Przykład nr 4
trait tTest {
function traitName()
{
echo __TRAIT__;
}
}
class Test {
use tTest;
}
$obj = new Test;
$obj->traitName(); // tTest
Przykład nr 5
namespace CKZIU\Dydaktyka\Example;
class Test {
static function hello()
{
echo 'Helo ' . __NAMESPACE__;
}
}
Test::hello(); // Helo CKZIU\Dydaktyka\Example
Przykład nr 6
namespace CKZIU\Dydaktyka\Example;
class test
{
function nic() {}
}
echo test::class; // CKZIU\Dydaktyka\Example\test