- Konu sahibi
- #1
PHP include nedir?
PHP
include, başka bir PHP dosyasının içeriğini çalışma sırasında mevcut dosyaya dahil edip çalıştıran dil yapısıdır. Genellikle ortak menü, üst bilgi, alt bilgi, yapılandırma veya tekrar kullanılan yardımcı kodları ayrı dosyalarda tutmak için kullanılır. Dahil edilen dosya bulunamazsa PHP bir uyarı üretir; ancak include sonrasındaki kod, kritik olmayan durumlarda çalışmaya devam edebilir.Nasıl çalışır?
include 'dosya.php'; ifadesi çalıştığında PHP dosyayı bulur, içeriğini o noktada işler ve sonra ana dosyanın sonraki satırına geçer. Dahil edilen dosyadaki değişkenler, include çağrısının yapıldığı kapsamda kullanılabilir. Bu nedenle dahil edilen dosya, çağrıldığı yerde tanımlanmış değişkenleri okuyabilir veya yeni değişkenler oluşturabilir.Dosya yolunu çalışma dizinine bağımlı bırakmamak için aynı klasördeki dosyalarda
__DIR__ kullanmak daha sağlamdır. __DIR__, ilgili PHP dosyasının bulunduğu klasörün yolunu verir.İki dosyayla şablon örneği
Aynı klasörde
index.php ve header.php adında iki dosya oluşturun.header.phpdosyasına aşağıdaki içeriği yazın:
Kod:<?php $pageTitle = $pageTitle ?? 'Örnek sayfa'; ?> <header> <h1><?= htmlspecialchars($pageTitle, ENT_QUOTES, 'UTF-8') ?></h1> </header>index.phpdosyasına aşağıdaki içeriği yazın:
Kod:<?php $pageTitle = 'Ana sayfa'; include __DIR__ . '/header.php'; echo '<p>Sayfa içeriği burada çalıştı.</p>'; ?>- Dosyaları PHP çalıştıran yerel geliştirme sunucusunda tutup
index.phpadresini açın; dosyaya diskten çift tıklamak PHP’yi çalıştırmaz.
Beklenen sonuç, önce
Ana sayfa başlığının, ardından Sayfa içeriği burada çalıştı. metninin görünmesidir. Bunun nedeni header.php dosyasının include satırında işlenmesi ve $pageTitle değişkenini çağıran dosyanın kapsamından okuyabilmesidir.Dosya bulunamazsa sayfanın devam etmesi, her zaman doğru davranış değildir. Örneğin ortak yapılandırma dosyası olmadan uygulamanın güvenli veya anlamlı biçimde çalışması mümkün değilse
include yerine require tercih edilir. PHP 8 ve sonrasında require başarısızlığında Error oluşur; yakalanmazsa istek sonlanır. Zorunlu bağımlılık yokken uygulamayı devam ettirecek şekilde bu hatayı gelişigüzel yutmayın. Aynı dosyanın birden fazla kez eklenmesi istenmiyorsa include_once veya kritik bağımlılıklarda require_once kullanılabilir.Hangi yapıyı seçmelisiniz?
Seçim, dosyanın bulunamadığında uygulamanın devam edip edemeyeceğine ve aynı dosyanın tekrar işlenmesinin sorun oluşturup oluşturmayacağına bağlıdır.
| Yapı | Dosya bulunamazsa | Tekrar çağrılırsa |
|---|---|---|
include | Uyarı verir, işlem genellikle devam eder | Dosyayı yeniden işler |
require | Yakalanmayan Error işlemi durdurur | Dosyayı yeniden işler |
include_once | Uyarı verir, işlem genellikle devam eder | Aynı dosyayı ikinci kez işlemez |
require_once | Yakalanmayan Error işlemi durdurur | Aynı dosyayı ikinci kez işlemez |
Ortak bir HTML parçası birkaç kez farklı bağlamlarda üretilecekse
include uygun olabilir. Sınıf tanımı, sabit tanımı veya yalnızca bir kez yüklenmesi gereken başlangıç kodlarında tekrar işleme sorunlarını önlemek için require_once daha uygun bir karardır.Sık yapılan hatalar
- Göreli yolu yanlış çalışma dizinine göre yazmak:
include 'header.php';bazı çalıştırma biçimlerinde beklenmeyen dosyayı arayabilir. Aynı klasör içininclude __DIR__ . '/header.php';kullanın. - Kritik dosyalarda
includekullanmak: Yapılandırma veya zorunlu başlangıç dosyası yokken uygulamanın devam etmesi hatayı daha sonra ve daha zor anlaşılır hâle getirebilir. - Aynı dosyayı tekrar dahil etmek: Fonksiyon, sınıf veya sabit tanımları yinelenirse hata oluşabilir. Böyle bir dosyayı yalnızca bir kez yükleyin.
- Dahil edilen dosyanın çıktı ürettiğini unutmak:
includeyalnızca kodu okumaz; dosyadaki PHP işlemleri ve PHP dışındaki doğrudan HTML de o noktada çalışır.
Dosya yolunu doğrudan ziyaretçinin gönderdiği değerden oluşturmayın. Seçim gerekiyorsa izin verilen adları önceden belirlenmiş yerel dosyalara eşleyin. include dosyayı çalıştırdığı için bu karar basit bir metin okuma işlemi gibi ele alınmamalıdır.
Sorun yaşarsanız önce dosya adını, büyük-küçük harf uyumunu ve
__DIR__ ile oluşturulan gerçek yolu kontrol edin. Dosya isteğe bağlı bir şablonsa include, uygulamanın çalışması için zorunluysa require kullanarak sonraki adımı belirleyin.Sık sorulan sorular
include edilen dosya bir değer döndürebilir mi?
Evet. Dosyada return kullanılırsa değer çağıran ifadeye döner ve o dosyanın işlenmesi biter. Başarılı bir include özel dönüş değeri yoksa 1, dosya açılamazsa uyarıyla false döndürür. Bu sonuç, dosyanın ekrana ürettiği HTML metniyle aynı şey değildir.
include dosyasına doğrudan tarayıcıdan erişilebilir mi?
Dosya web sunucusunun herkese açık belge kökünde bulunuyorsa doğrudan istenebilir. Ortak PHP parçalarının tarayıcıdan açılmasını istemiyorsanız bunları uygun bir erişim düzenine sahip, herkese açık olmayan bir konumda tutun; yalnızca dosyanın kendisini gizlemek uygulama erişim modelinin yerine geçmez.