Note that __CLASS__ and __METHOD__ both reference the class the code is written in, not whatever the object class is. E.g. if you have an object of class B inheriting from class A, any usage of __CLASS__ in class A is going to give "A".
Değerleri kullanıldıkları yere göre değişen dokuz sihirli sabit vardır.
Örneğin, __LINE__
sabitinin değeri betiğin hangi
satırında kullanıldığına bağlıdır. Çalışma zamanında çözümlenen sırada
sabitlerin tersine "sihirli" sabitlerin tamamı derleme sırasında çözümlenir.
Bu özel sabitler büyük-küçük harf farkına duyarsızdır ve aşağıda
listelenmişlerdir:
İsim | Açıklama |
---|---|
__LINE__ |
Dosyada geçerli satırın numarası. |
__FILE__ |
Dosyanın veya sembolik bağdan çözümlenen dosyanın tam dosya yolu ve dosya ismi. include işlevi ile betiğe eklenen bir dosyanın içinde kullanıldığında betiğin ismini değil, eklenen dosyanın ismini içerir. |
__DIR__ |
Dosyanın bulurduğu dizin. Dahil edilen bir dosyanın içinde
kullanıldığında dahil edilen dosyanın dizini döner. Bu
dirname(__FILE__) işlevine eşdeğerder. Bu dizin
isminin sonuna bir kök dizin olmadıkça bir bölü imi konmaz.
|
__FUNCTION__ |
İşlev ismi veya anonim işlevler için {closure} .
|
__CLASS__ |
Sınıf ismi. Bildirildiği isim alanını
(Foo\Bar gibi) içerir. Kalıtsal özelliklerin içinde kullanıldığında __CLASS__, içinde kullanıldığı sınıfın ismidir.
|
__TRAIT__ |
Kalıtsal özellik ismi. Bildirildiği isim alanını
(Foo\Bar gibi) içerir.
|
__METHOD__ |
Yöntem ismi. |
__NAMESPACE__ |
Geçerli isim alanının adı. |
SınıfAdı::class |
Tamamen nitelenmiş sınıf ismi. |
Note that __CLASS__ and __METHOD__ both reference the class the code is written in, not whatever the object class is. E.g. if you have an object of class B inheriting from class A, any usage of __CLASS__ in class A is going to give "A".
If PHP is run inside a web server request there is an important difference between the __DIR__ constant and $_SERVER['DOCUMENT_ROOT'].
Where __DIR__ of a PHP script contained within a sub-folder will include the complete server path $_SERVER['DOCUMENT_ROOT'] will contain a server path up to the _root_ of the application. This can be helpful when for instance an auto-loader is defined in an include file sitting inside a sub-folder and where the classes are located in another folder at the root of the application.
<?php
namespace My\App {
class Api {
public static fetch() {
print __FUNCTION__ . "\n"; // outputs fetch
print __METHOD__ . "\n"; // outputs My\App\Api::fetch
}
}
Api::fetch();
}
namespace {
My\App\Api::fetch();
}
?>
__METHOD__ outputs a fully qualified method name; __FUNCTION__ when used in a method, outputs just the method name.