CodeBlanks Logo Icon CodeBlanks

__DIR__ ve yol yönetimi

PHP kursu · Başlangıç · Ders 109/116

__DIR__ sihirli sabitiyle dosya yollarını güvenli biçimde yönetmeyi öğrenirsin.

__DIR__ sihirli sabiti

PHP'de __DIR__ sihirli sabiti (magic constant), içinde bulunduğun dosyanın bulunduğu dizinin tam (mutlak) yolunu verir. Başka bir deyişle, çağrıldığı dosyanın dizinidir.

Bu, dosya dahil ederken yolları güvenli biçimde kurmak için kullanılır. include 'lib/db.php'; yerine include __DIR__ . '/lib/db.php'; yazarsan, betik hangi dizinden çalıştırılırsa çalıştırılsın doğru dosyayı bulur. Göreli yolar (../lib/db.php) çağıran betiğin çalışma dizinine bağlıdır ve CLI'dan mı web'den mi çalıştığına göre değişebilir. __DIR__ ise her zaman aynı sonucu verir.

Göreli ve mutlak yollar

Dosya dahil ederken iki tür yol kullanabilirsin: göreli yol (lib/db.php, ../header.php) ve mutlak yol (/var/www/app/lib/db.php). Göreli yol, PHP'nin o anki çalışma dizinine (cwd) göre çözümlenir; bu dizin CLI'da terminalin dizini, web'de ise betiğin dizini olabilir.

Bu belirsizlik hatalara yol açar. __DIR__ ile başlayan yol ise her zaman aynıdır: include __DIR__ . '/../lib/db.php'; çağrısı, betiğin dizininden bir üst çıkıp lib klasörüne gider. Çok katmanlı projelerde __DIR__ kullanmak yolların tutarlı kalmasını sağlar.

Uygulama partial.php dosyasını __DIR__ ile oluştur ve include et

$file değişkenine __DIR__ . "/partial.php" yolunu ata. file_put_contents($file, "<?php echo 'Partial içeriği'; ?>") ile dosyayı yaz. Sonra include $file; ile dosyayı dahil et.

Örnek çözümü göster
Önce $file = __DIR__ . "/partial.php"; ata. Sonra file_put_contents($file, "<?php echo 'Partial içeriği'; ?>"); yaz. Son olarak include $file; ekle.
Örnek çözüm:
<?php
// partial.php dosyasını __DIR__ ile oluştur ve include et
$file = __DIR__ . "/partial.php";
file_put_contents($file, "<?php echo 'Partial içeriği'; ?>");
include $file;

Kendini test et

  1. __DIR__ sihirli sabiti ne döner?

    • Çalışan betiğin URL'sini
    • Sunucunun kök dizinini
    • PHP'nin kurulu olduğu dizini
    • Çalışan dosyanın bulunduğu dizini
    Cevabı göster

    Çalışan dosyanın bulunduğu dizini — Doğru. __DIR__ çağrıldığı dosyanın bulunduğu dizinin mutlak yolunu verir.

  2. __DIR__ ile yolu tamamla

    $file = ____ . "/lib/db.php";
    Cevabı göster
    $file = __DIR__ . "/lib/db.php";
  3. Yol ifadelerini eşle

    __DIR__
    Dosyanın dizini
    __FILE__
    Dosyanın tam yolu
    sys_get_temp_dir()
    Geçici dizin
    /var/www/app
    Mutlak yol

Başlangıç bölümündeki tüm dersler