Statement on glibc/iconv Vulnerability

Sihirli Sabitler

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:

PHP'nin sihirli sabitleri
İ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.

add a note

User Contributed Notes 3 notes

up
2
Rich
9 months ago
<?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.
up
0
chris at ocproducts dot com
11 months ago
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".
up
0
theking2 at king dot ma
1 year ago
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.
To Top