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.

versiyon: 3.0