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}
.