Sistemul de tipuri

Sistemul de tipuri este crucial pentru dezvoltarea aplicațiilor robuste. Latte aduce suport pentru tipuri și în șabloane. Datorită faptului că știm ce tip de date sau obiect se află în fiecare variabilă, poate:

  • IDE-ul să ofere sugestii corecte (vezi integrare)
  • Analiza statică să detecteze erori

Ambele cresc în mod fundamental calitatea și confortul dezvoltării.

Tipurile declarate sunt informative și Latte nu le verifică în prezent.

Cum să începeți să utilizați tipurile? Creați o clasă de șablon, de exemplu CatalogTemplateParameters, reprezentând parametrii transmiși, tipurile lor și, eventual, valorile lor implicite:

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

Și apoi, la începutul șablonului, introduceți tag-ul {templateType} cu numele complet al clasei (inclusiv namespace). Acest lucru definește că în șablon există variabilele $langs și $products inclusiv tipurile corespunzătoare. Tipurile variabilelor locale pot fi specificate folosind tag-urile {var}, {varType}, {define}.

Din acel moment, IDE-ul vă poate oferi sugestii corecte.

Cum să vă ușurați munca? Cum să scrieți cel mai ușor clasa cu parametrii șablonului sau tag-urile {varType}? Lăsați-le să fie generate. Pentru aceasta există perechea de tag-uri {templatePrint} și {varPrint}. Dacă le plasați într-un șablon, în loc de redarea normală, se va afișa o propunere de cod pentru clasă, respectiv o listă de tag-uri {varType}. Apoi este suficient să selectați codul cu un singur clic și să-l copiați în proiect.

{templateType}

Tipurile parametrilor transmiși șablonului le declarăm folosind o clasă:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Cum să declarăm tipurile variabilelor? Pentru aceasta servesc tag-urile {varType} pentru variabilele existente, sau {var}:

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

{templatePrint}

Puteți, de asemenea, să lăsați clasa să fie generată folosind tag-ul {templatePrint}. Dacă îl plasați la începutul șablonului, în loc de redarea normală, se va afișa o propunere de clasă. Apoi este suficient să selectați codul cu un singur clic și să-l copiați în proiect.

{varPrint}

Tag-ul {varPrint} vă va economisi timp la scriere. Dacă îl plasați într-un șablon, în loc de redarea normală, se va afișa o propunere de tag-uri {varType} pentru variabilele locale. Apoi este suficient să selectați codul cu un singur clic și să-l copiați în șablon.

{varPrint} în sine afișează doar variabilele locale care nu sunt parametri ai șablonului. Dacă doriți să afișați toate variabilele, utilizați {varPrint all}.

versiune: 3.0