Tip Sistemi
Tip sistemi, sağlam uygulamalar geliştirmek için anahtardır. Latte, şablonlara da tip desteği getirir. Her değişkende hangi veri veya nesne tipinin olduğunu bildiğimiz için,
- IDE doğru şekilde önerilerde bulunabilir (bkz. entegrasyon)
- statik analiz hataları ortaya çıkarabilir
Her ikisi de geliştirme kalitesini ve rahatlığını önemli ölçüde artırır.
Bildirilen tipler bilgilendiricidir ve Latte şu anda bunları kontrol etmemektedir.
Tipleri kullanmaya nasıl başlanır? İletilen parametreleri, tiplerini ve muhtemelen varsayılan değerlerini temsil eden bir
şablon sınıfı oluşturun, örneğin CatalogTemplateParameters
:
class CatalogTemplateParameters
{
public function __construct(
public string $langs,
/** @var ProductEntity[] */
public array $products,
public Address $address,
) {}
}
$latte->render('template.latte', new CatalogTemplateParameters(
address: $userAddress,
lang: $settings->getLanguage(),
products: $entityManager->getRepository('Product')->findAll(),
));
Ve ardından şablonun başına {templateType}
etiketini sınıfın tam adıyla (ad alanı dahil) ekleyin. Bu,
şablonda $langs
ve $products
değişkenlerinin ilgili tipleriyle birlikte bulunduğunu tanımlar. Yerel
değişkenlerin tiplerini {var}
,
{varType}
, {define}
etiketlerini kullanarak belirtebilirsiniz.
O andan itibaren IDE size doğru önerilerde bulunabilir.
İşinizi nasıl kolaylaştırırsınız? Şablon parametreleri veya {varType}
etiketleri içeren bir sınıfı en
kolay nasıl yazarsınız? Oluşturulmalarını sağlayın. Bunun için {templatePrint}
ve {varPrint}
etiket çifti vardır. Bunları bir şablona yerleştirirseniz, normal işleme yerine sınıfın kod önerisi veya
{varType}
etiketlerinin listesi görüntülenir. Ardından kodu tek bir tıklamayla işaretleyip projenize
kopyalamanız yeterlidir.
{templateType}
Şablona iletilen parametrelerin tiplerini bir sınıf kullanarak bildiririz:
{templateType MyApp\CatalogTemplateParameters}
{varType}
Değişkenlerin tipleri nasıl bildirilir? Bunun için mevcut değişkenler için {varType}
etiketleri veya {var}
kullanılır:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
Sınıfı {templatePrint}
etiketini kullanarak da oluşturabilirsiniz. Bunu şablonun başına yerleştirirseniz,
normal işleme yerine sınıfın önerisi görüntülenir. Ardından kodu tek bir tıklamayla işaretleyip projenize kopyalamanız
yeterlidir.
{varPrint}
{varPrint}
etiketi size yazma zamanından tasarruf ettirir. Bunu şablona yerleştirirseniz, normal işleme yerine
yerel değişkenler için {varType}
etiketlerinin önerisi görüntülenir. Ardından kodu tek bir tıklamayla
işaretleyip şablona kopyalamanız yeterlidir.
{varPrint}
'in kendisi yalnızca şablon parametreleri olmayan yerel değişkenleri yazdırır. Tüm değişkenleri
yazdırmak istiyorsanız, {varPrint all}
kullanın.