PHP
__DIR__ ve yol yönetimi
__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
-
__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.
-
__DIR__ ile yolu tamamla
$file = ____ . "/lib/db.php";
Cevabı göster
$file = __DIR__ . "/lib/db.php";
-
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
Sıradaki ders: Layout ve partial mantığı