Típusrendszer

A típusrendszer kulcsfontosságú a robusztus alkalmazások fejlesztéséhez. A Latte a sablonokba is bevezeti a típusok támogatását. Annak köszönhetően, hogy tudjuk, milyen adat- vagy objektumtípus van minden változóban,

  • az IDE helyesen tud súgni (lásd integráció)
  • a statikus analízis felfedheti a hibákat

Mindkettő alapvetően növeli a fejlesztés minőségét és kényelmét.

A deklarált típusok informatívak, és a Latte jelenleg nem ellenőrzi őket.

Hogyan kezdjük el használni a típusokat? Hozzon létre egy sablonosztályt, pl. CatalogTemplateParameters, amely reprezentálja az átadott paramétereket, azok típusait és esetleg alapértelmezett értékeit:

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(),
));

Ezután a sablon elejére illessze be a {templateType} taget az osztály teljes nevével (beleértve a névteret is). Ez definiálja, hogy a sablonban a $langs és $products változók a megfelelő típusokkal együtt léteznek. A lokális változók típusait a {var}, {varType}, {define} tagekkel adhatja meg.

Ettől kezdve az IDE helyesen tud súgni.

Hogyan spórolhatunk munkát? Hogyan írhatjuk le a legegyszerűbben a sablonparaméterekkel rendelkező osztályt vagy a {varType} tageket? Hagyjuk, hogy legenerálódjanak. Erre létezik a {templatePrint} és {varPrint} tagpár. Ha ezeket elhelyezi a sablonban, a szokásos renderelés helyett az osztály kódjának javaslata, illetve a {varType} tagek listája jelenik meg. A kódot ezután elég egy kattintással kijelölni és a projektbe másolni.

{templateType}

A sablonba átadott paraméterek típusait egy osztály segítségével deklaráljuk:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Hogyan deklaráljuk a változók típusait? Erre szolgálnak a {varType} tagek a meglévő változókhoz, vagy a {var}:

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

{templatePrint}

Az osztályt a {templatePrint} tag segítségével is legeneráltathatja. Ha ezt a sablon elejére helyezi, a szokásos renderelés helyett az osztály javaslata jelenik meg. A kódot ezután elég egy kattintással kijelölni és a projektbe másolni.

{varPrint}

A {varPrint} tag időt takarít meg az írással. Ha ezt a sablonba helyezi, a szokásos renderelés helyett a lokális változókhoz tartozó {varType} tagek javaslata jelenik meg. A kódot ezután elég egy kattintással kijelölni és a sablonba másolni.

Maga a {varPrint} csak a lokális változókat írja ki, amelyek nem sablonparaméterek. Ha az összes változót ki szeretné írni, használja a {varPrint all}-t.

verzió: 3.0