Yükleyiciler
Yükleyiciler, Latte'nin şablonlarınızın kaynak kodunu almak için kullandığı mekanizmadır. Çoğu zaman şablonlar diskteki dosyalar olarak saklanır, ancak esnek yükleyici sistemi sayesinde bunları pratikte her yerden yükleyebilir veya hatta dinamik olarak oluşturabilirsiniz.
Yükleyici Nedir?
Şablonlarla çalışırken, genellikle projenizin dizin yapısında bulunan .latte
dosyalarını hayal edersiniz.
Latte'deki varsayılan FileLoader bununla ilgilenir. Ancak, bir şablon adı (
'main.latte'
veya 'components/card.latte'
gibi) ile gerçek kaynak kodu arasındaki bağlantı, bir
dosya yoluna doğrudan bir eşleme olmayabilir.
İşte burada yükleyiciler devreye girer. Yükleyici, bir şablon adını (tanımlayıcı bir dize) alıp Latte'ye kaynak
kodunu sağlamakla görevli bir nesnedir. Latte bu görev için tamamen yapılandırılmış yükleyiciye güvenir. Bu yalnızca
$latte->render('main.latte')
ile istenen başlangıç şablonu için değil, aynı zamanda
{include ...}
, {layout ...}
, {embed ...}
veya {import ...}
gibi etiketler
kullanılarak içeride başvurulan her şablon için de geçerlidir.
Neden özel bir yükleyici kullanmalı?
- Alternatif kaynaklardan yükleme: Veritabanında, önbellekte (Redis veya Memcached gibi), sürüm kontrol sisteminde (Git gibi, belirli bir commite dayalı olarak) saklanan veya dinamik olarak oluşturulan şablonları alma.
- Özel adlandırma kurallarını uygulama: Şablonlar için daha kısa takma adlar kullanmak veya belirli bir arama yolu mantığı uygulamak isteyebilirsiniz (ör. önce tema dizininde arama, sonra varsayılan dizine geri dönme).
- Güvenlik veya erişim kontrolü ekleme: Özel bir yükleyici, belirli şablonları yüklemeden önce kullanıcı izinlerini doğrulayabilir.
- Ön işleme: Genellikle önerilmese de (derleme geçişleri daha iyidir), bir yükleyici teorik olarak şablon içeriğini Latte'ye iletmeden önce ön işleyebilir.
Bir Latte\Engine
örneği için yükleyiciyi setLoader()
metoduyla ayarlarsınız:
Yükleyici, Latte\Loader
arayüzünü uygulamalıdır.
Yerleşik Yükleyiciler
Latte birkaç standart yükleyici sunar:
FileLoader
Bu, başka bir tane belirtilmediği sürece Latte\Engine
sınıfı tarafından kullanılan varsayılan
yükleyicidir. Şablonları doğrudan dosya sisteminden yükler.
İsteğe bağlı olarak, erişimi kısıtlamak için bir kök dizin ayarlayabilirsiniz:
{include}
veya {layout}
gibi etiketleri kullanırken, mutlak bir yol belirtilmedikçe şablon
adlarını mevcut şablona göre çözer.
StringLoader
Bu yükleyici, şablon içeriğini, anahtarların şablon adları (tanımlayıcılar) ve değerlerin şablon kaynak kodu dizeleri olduğu ilişkisel bir diziden alır. Özellikle test etme veya şablonların doğrudan PHP kodunda saklanabileceği küçük uygulamalar için kullanışlıdır.
Diğer adlandırılmış dize şablonlarına başvuran ekleme veya kalıtıma ihtiyaç duymadan yalnızca bir şablonu
doğrudan bir dizeden oluşturmanız gerekiyorsa, bir dizi olmadan StringLoader
kullanırken dizeyi doğrudan
render()
veya renderToString()
metoduna iletebilirsiniz:
Özel Bir Yükleyici Oluşturma
Özel bir yükleyici oluşturmak için (ör. şablonları veritabanından, önbellekten, sürüm kontrol sisteminden veya başka bir kaynaktan yüklemek için), Latte\Loader arayüzünü uygulayan bir sınıf oluşturmanız gerekir.
Her metodun ne yapması gerektiğine bakalım.
getContent(string $name): string
Bu, yükleyicinin temel metodudur. Görevi, $name
ile tanımlanan şablonun tam kaynak kodunu almak ve
döndürmektir ($latte->render()
metoduna iletildiği veya getReferredName()
metodu tarafından döndürüldüğü gibi).
Şablon bulunamazsa veya erişilemezse, bu metot bir Latte\RuntimeException
istisnası
fırlatmalıdır.
getReferredName(string $name, string $referringName): string
Bu metot, {include}
, {layout}
vb. etiketler içinde kullanılan şablon adlarının çözümlenmesini
yönetir. Latte örneğin main.latte
içinde {include 'partial.latte'}
ile karşılaştığında, bu
metodu $name = 'partial.latte'
ve $referringName = 'main.latte'
ile çağırır.
Metodun görevi, $referringName
içinde sağlanan bağlama dayanarak, diğer yükleyici metotları çağrılırken
kullanılacak olan $name
'i kanonik bir tanımlayıcıya (ör. mutlak yol, benzersiz veritabanı anahtarı)
çevirmektir.
getUniqueId(string $name): string
Latte, performansı artırmak için derlenmiş şablonların bir önbelleğini kullanır. Her derlenmiş şablon dosyası,
kaynak şablon tanımlayıcısından türetilen benzersiz bir ada ihtiyaç duyar. Bu metot, $name
şablonunu
benzersiz olarak tanımlayan bir dize sağlar.
Dosya tabanlı şablonlar için mutlak yol işe yarayabilir. Veritabanındaki şablonlar için, bir önek ve veritabanı ID'sinin birleşimi yaygındır.
Örnek: Basit Veritabanı Yükleyicisi
Bu örnek, name
(benzersiz tanımlayıcı), content
ve updated_at
sütunlarına sahip
templates
adlı bir veritabanı tablosunda saklanan şablonları yükleyen bir yükleyicinin temel yapısını
gösterir.
Özel yükleyiciler, Latte şablonlarınızın nereden geldiği üzerinde tam kontrol sahibi olmanızı sağlar, bu da çeşitli depolama sistemleri ve iş akışlarıyla entegrasyona olanak tanır.