Típus Rendszer
A típusrendszer a robusztus alkalmazások fejlesztésének legfontosabb eleme. A Latte elhozza a sablonokba a típustámogatást. Annak ismerete, hogy az egyes változók milyen adat- vagy objektumtípusúak, lehetővé teszi, hogy
- Az IDE helyesen automatikusan kitölti a típusokat (lásd integráció és bővítmények).
- statikus elemzés a hibák felismeréséhez
Két olyan pont, amely jelentősen javítja a fejlesztés minőségét és kényelmét.
A bejelentett típusok tájékoztató jellegűek, és a Latte jelenleg nem ellenőrzi őket.
Hogyan kezdjük el használni a típusokat? Hozzon létre egy sablon osztályt, pl. CatalogTemplateParameters
,
amely az átadott paramétereket reprezentálja:
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}
címkét a teljes osztálynévvel (beleértve a névteret
is). Ez meghatározza, hogy a sablonban a $langs
és a $products
változók legyenek a megfelelő
típusokkal együtt. A helyi változók típusait is megadhatja a címkék segítségével {var}
, {varType}
és {define}
.
Most az IDE helyesen tudja az automatikus kitöltést.
Hogyan menthető el a munka? Hogyan lehet a lehető legegyszerűbben megírni egy sablon osztályt vagy a
{varType}
címkéket? Generáltassa őket. Pontosan erre szolgál a {templatePrint}
és a
{varPrint}
címkepár. Ha a sablonban elhelyezzük az egyik ilyen taget, akkor a normál megjelenítés helyett az
osztály vagy a sablon kódja jelenik meg. Ezután egyszerűen válassza ki és másolja be a kódot a projektjébe.
{templateType}
A sablonhoz átadott paraméterek típusait a class segítségével deklaráljuk:
{templateType MyApp\CatalogTemplateParameters}
{varType}
Hogyan deklaráljuk a változók típusait? Erre a célra használjuk a {varType}
címkét egy meglévő
változóhoz, vagy a {var}
:
{varType Nette\Security\User $user}
{varType string $lang}
{templatePrint}
Ezt az osztályt a {templatePrint}
címke használatával is létrehozhatja. Ha a sablon elejére helyezi, akkor a
normál sablon helyett az osztály kódja jelenik meg. Ezután egyszerűen válassza ki és másolja be a kódot a
projektjébe.
{varPrint}
A {varPrint}
címke időt takarít meg. Ha elhelyezi egy sablonban, a {varType}
címkék listája
jelenik meg a normál megjelenítés helyett. Ezután egyszerűen válassza ki és másolja be a kódot a sablonjába.
A {varPrint}
olyan helyi változókat sorol fel, amelyek nem sablonparaméterek. Ha az összes változót fel
szeretné sorolni, használja a {varPrint all}
.