Kategoriler
PHP

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.
UserModel

Yazar Muhammet ŞAFAK

1992 İstanbul doğumluyum. 2008 yılından beri profesyonel olarak PHP geliştiriyorum. Her ne kadar ağırlıklı olarak PHP üzerinde çalışsam da C, C++, Python, Java programlama dillerini de kullanıyorum.

Bir Cevap Yazın