PHP'de Sihirli Sabitler (Magic Constants)
PHP'de kullanıldıkları yere göre değişen 8 adet ön tanımlı sabit ya da bir başka tanımla sihirli sabitler vardır.
İsimAçıklama__LINE__Kullanıldığı satırın, satır numarası bilgisini döndürür.__FILE__Kullanıldığı dosyanın tam dosya yolu ve dosya ismini döndürür. 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 bulunduğu dizin. Dahil edilen bir dosyanın içinde kullanıldığında dahil edilen dosyanın dizini döner. Bu dirname(__FILE__) ile aynı şeydir.__FUNCTION__Kod blogu içerisinde bulunduğu fonksiyonun fonksiyon adı bilgisini döndürür.__CLASS__Kod blogu içerisinde bulunduğu sınıfın sınıf adı bilgisini döndödürür.__TRAIT__Kullanıldığı sınıf dahilinde kalıtsal özelliğin özellik adı bilgisini döndürür.__METHOD__Kod blogu içerisinde bulunduğu metodun metot adı bilgisini döndürür.__NAMESPACE__Dosyaya tanımlanmış olan namespace isim bilgisini döndürür.
Burada dikkat etmeniz gereken önemli bir husus; ön tanımlı sabitlerin başında ve sonunda bir değil, iki alt çizgi (_) bulunuyor. Şimdi bunların kullanımlarına kısaca bakalım.
__LINE__
<?php
echo __LINE__;
?>Bu ön tanımlı sabit, sayfa içerisinde kaçıncı satırda kullanıldıysa o satırın satır numarasını döndürür.
__FILE__
<?php
echo __FILE__;
?>Bu ön tanımlı sabit, kullanıldığı sayfanın tam dosya yolunu C:\xampp\htdocs\index.php tarzında verir.
__DIR__
<?php
echo __DIR__;
?>Bu ön tanımlı sabit, kullanıldığı sayfanın tam dizin yolunu (dosya adı olmadan) C:\xampp\htdocs tarzında verir.
__FUNCTION__
<?php
function sihirliSabit(){
echo "Benim adım " . __FUNCTION__;
}
sihirliSabit();
?>Bu ön tanımlı sabit, içerisinde kullanıldığı fonksiyonun ismini verir. Örnek olarak yukarıda verdiğim kod şu çıktıyı üretir;
Benim adım sihirliSabit__CLASS__
<?php
class SihirliSinif {
function __construct(){
echo "Ben " . __CLASS__ . " sınıfıyım.";
}
}
new SihirliSinif();
?>Bu ön tanımlı sabit kullanıldığı sınıfın adını döndürür. Örneğin yukarıdaki kod aşağıdaki çıktıyı üretir;
Ben SihirliSinif sınıfıyım.__TRAIT__
<?php
trait SihirliOzellik{
function yazdirBir(){
echo __TRAIT__;
}
}
class SihirliSinif {
use SihirliOzellik;
}
$nesne = new SihirliSinif();
$nesne->yazdirBir();
?>Bu ön tanımlı sabit, içinde bulunduğu kalıtsal özelliğin isim bilgisini verir. Yukarıdaki örneğin çıktısı şöyledir;
SihirliOzellik__METHOD__
<?php
class SihirliSinif {
public function hersey_olabilir(){
echo "Ben " . __CLASS__ . " sınıfındaki " . __METHOD__ . " metoduyum.";
}
}
$nesne = new SihirliSinif();
$nesne->hersey_olabilir();
?>Bu ön tanımlı sabit, içinde bulunduğu metodun isim bilgisini verir. Yukarıdaki örneğin çıktısı şöyledir;
Ben SihirliSinif sınıfındaki SihirliSinif::hersey_olabilir metoduyum.__NAMESPACE__
<?php
namespace UserModel {
class User {
public function __construct() {
echo "Ben " . __CLASS__ . " sınıfıyım.\n";
}
public function showData() {
echo "Ben " . __METHOD__ . " metoduyum.\n";
}
}
$nesne = new User();
$nesne->showData();
echo __NAMESPACE__;
}
?>Bu ön tanımlı sabit, içinde bulunduğu ad alanının (namespace) isim bilgisini döndürür. Örnek olarak yukarıdaki kod şöyle bir çıktı üretir;
Ben UserModel\User sınıfıyım.
Ben UserModel\User::showData metoduyum.
UserModelYazar
Muhammet Şafak
Yazılım Mühendisi & Full-Stack Geliştirici. PHP, Laravel ve modern web teknolojileri üzerine yazıyor.
HakkımdaYorumlar 0
Henüz yorum yapılmamış.
İlk yorumu siz yapın!
Yorum Yaz
Yorumunuz moderasyon sonrası yayınlanacaktır.