Tip sistemi

Tip sistemi, sağlam uygulamalar geliştirmek için çok önemlidir. Latte, tip desteğini şablonlara da getirir. Her değişkenin veri veya nesne tipini bilerek şunları sağlar:

Her ikisi de geliştirmenin kalitesini ve rahatlığını belirgin biçimde artırır.

Bildirilen tipler bilgilendiricidir ve Latte şu anda onları denetlemez.

Tipleri kullanmaya nasıl başlanır? Aktarılan parametreleri, tiplerini ve isteğe bağlı olarak varsayılan değerlerini temsil eden bir şablon sınıfı oluşturun, örneğin CatalogTemplateParameters:

class CatalogTemplateParameters
{
	public function __construct(
		public string $lang,
		/** @var ProductEntity[] */
		public array $products,
		public Address $address,
	) {}
}

$latte->render('template.latte', new CatalogTemplateParameters(
	address: $userAddress,
	lang: $settings->getLanguage(),
	products: $entityManager->getRepository('Product')->findAll(),
));

Sonra şablonun başına, sınıfın tam adını (isim alanı dahil) içeren {templateType} etiketini ekleyin. Bu, şablonda $lang, $products ve $address değişkenlerinin, tipleriyle birlikte var olduğunu tanımlar. Yerel değişkenlerin tiplerini de {var}, {varType} ve {define} etiketleriyle belirtebilirsiniz.

Bu andan itibaren IDE'niz otomatik tamamlamayı doğru biçimde sunabilir.

İşten nasıl tasarruf edilir? Bir şablon parametre sınıfını veya {varType} etiketlerini yazmanın en kolay yolu nedir? Onları ürettirin! {templatePrint} ve {varPrint} etiket çifti tam da bunun içindir. Onları bir şablona koyarsanız, olağan render yerine sınıf kodunun bir önerisi veya {varType} etiketlerinin bir listesi gösterilir. Sonra kodu tek tıklamayla seçip projenize kopyalamanız yeterli.

{templateType}

Şablona aktarılan parametrelerin tipleri bir sınıf kullanılarak bildirilir:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Değişken tipleri nasıl bildirilir? Var olan değişkenler için {varType} etiketini ya da {var} etiketini kullanın:

{varType Nette\Security\User $user}
{varType string $lang}

{templatePrint}

Sınıfı {templatePrint} etiketiyle de ürettirebilirsiniz. Onu şablonun başına koyarsanız, olağan render yerine sınıf kodunun bir önerisi gösterilir. Sonra kodu tek tıklamayla seçip projenize kopyalamanız yeterli. İsteğe bağlı olarak bir üst sınıf adı belirtebilirsiniz, örneğin {templatePrint ParentClass}; üretilen sınıf onu genişletir.

{varPrint}

{varPrint} etiketi size yazma zamanı kazandırır. Onu bir şablona koyarsanız, olağan render yerine yerel değişkenler için {varType} etiketlerinin bir önerisi gösterilir. Sonra kodu tek tıklamayla seçip şablonunuza kopyalamanız yeterli.

{varPrint} kendi başına yalnızca şablon parametresi olmayan yerel değişkenleri listeler. Tüm değişkenleri listelemek isterseniz {varPrint all} kullanın.

versiyon: 3.x