Nette Documentation Preview

syntax
Τύπος συστήματος
****************

<div class=perex>

Το σύστημα τύπων είναι το κύριο πράγμα για την ανάπτυξη εύρωστων εφαρμογών. Το Latte φέρνει την υποστήριξη τύπων στα πρότυπα. Για να γνωρίζετε τι τύπος δεδομένων ή αντικειμένου είναι κάθε μεταβλητή επιτρέπει

- IDE να συμπληρώνει σωστά αυτόματα (βλ. [ενσωμάτωση και πρόσθετα |recipes#Editors and IDE])
- στατική ανάλυση για τον εντοπισμό σφαλμάτων

Δύο σημεία που βελτιώνουν σημαντικά την ποιότητα και την ευκολία της ανάπτυξης.

</div>

.[note]
Οι δηλωμένοι τύποι είναι πληροφοριακοί και η Latte δεν τους ελέγχει προς το παρόν.

Πώς να αρχίσετε να χρησιμοποιείτε τύπους; Δημιουργήστε μια πρότυπη κλάση, π.χ. `CatalogTemplateParameters`, που να αναπαριστά τις παραμέτρους που περνούν:

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

Στη συνέχεια, εισάγετε την ετικέτα `{templateType}` με το πλήρες όνομα της κλάσης (συμπεριλαμβανομένου του χώρου ονομάτων) στην αρχή του προτύπου. Αυτό ορίζει ότι θα υπάρχουν μεταβλητές `$langs` και `$products` στο πρότυπο συμπεριλαμβανομένων των αντίστοιχων τύπων.
Μπορείτε επίσης να καθορίσετε τους τύπους των τοπικών μεταβλητών χρησιμοποιώντας ετικέτες [`{var}` |tags#var-default], `{varType}` και [`{define}` |template-inheritance#definitions].

Τώρα το IDE μπορεί να κάνει σωστή αυτόματη συμπλήρωση.

Πώς να αποθηκεύσετε την εργασία; Πώς να γράψετε μια κλάση προτύπου ή τις ετικέτες `{varType}` όσο το δυνατόν πιο εύκολα; Πάρτε τα που δημιουργούνται.
Αυτό ακριβώς κάνει το ζεύγος ετικετών `{templatePrint}` και `{varPrint}`.
Αν τοποθετήσετε μία από αυτές τις ετικέτες σε ένα πρότυπο, ο κώδικας της κλάσης ή του προτύπου εμφανίζεται αντί της κανονικής απόδοσης. Στη συνέχεια, απλά επιλέξτε και αντιγράψτε τον κώδικα στο έργο σας.


`{templateType}`
----------------
Οι τύποι των παραμέτρων που περνούν στο πρότυπο δηλώνονται με τη χρήση class:

```latte
{templateType MyApp\CatalogTemplateParameters}
```


`{varType}`
-----------
Πώς δηλώνουμε τύπους μεταβλητών; Για το σκοπό αυτό χρησιμοποιήστε την ετικέτα `{varType}` για μια υπάρχουσα μεταβλητή, ή [`{var}` |tags#var-default]:

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


`{templatePrint}`
-----------------
Μπορείτε επίσης να δημιουργήσετε αυτή την κλάση χρησιμοποιώντας την ετικέτα `{templatePrint}`. Αν την τοποθετήσετε στην αρχή του προτύπου, εμφανίζεται ο κώδικας της κλάσης αντί του κανονικού προτύπου. Στη συνέχεια, απλά επιλέξτε και αντιγράψτε τον κώδικα στο έργο σας.


`{varPrint}`
------------
Η ετικέτα `{varPrint}` σας εξοικονομεί χρόνο. Εάν την τοποθετήσετε σε ένα πρότυπο, εμφανίζεται η λίστα των ετικετών `{varType}` αντί της κανονικής απόδοσης. Στη συνέχεια, απλά επιλέξτε και αντιγράψτε τον κώδικα στο πρότυπό σας.

Η ετικέτα `{varPrint}` απαριθμεί τοπικές μεταβλητές που δεν είναι παράμετροι του προτύπου. Αν θέλετε να παραθέσετε όλες τις μεταβλητές, χρησιμοποιήστε το `{varPrint all}`.

Τύπος συστήματος

Το σύστημα τύπων είναι το κύριο πράγμα για την ανάπτυξη εύρωστων εφαρμογών. Το Latte φέρνει την υποστήριξη τύπων στα πρότυπα. Για να γνωρίζετε τι τύπος δεδομένων ή αντικειμένου είναι κάθε μεταβλητή επιτρέπει

Δύο σημεία που βελτιώνουν σημαντικά την ποιότητα και την ευκολία της ανάπτυξης.

Οι δηλωμένοι τύποι είναι πληροφοριακοί και η Latte δεν τους ελέγχει προς το παρόν.

Πώς να αρχίσετε να χρησιμοποιείτε τύπους; Δημιουργήστε μια πρότυπη κλάση, π.χ. 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(),
));

Στη συνέχεια, εισάγετε την ετικέτα {templateType} με το πλήρες όνομα της κλάσης (συμπεριλαμβανομένου του χώρου ονομάτων) στην αρχή του προτύπου. Αυτό ορίζει ότι θα υπάρχουν μεταβλητές $langs και $products στο πρότυπο συμπεριλαμβανομένων των αντίστοιχων τύπων. Μπορείτε επίσης να καθορίσετε τους τύπους των τοπικών μεταβλητών χρησιμοποιώντας ετικέτες {var}, {varType} και {define}.

Τώρα το IDE μπορεί να κάνει σωστή αυτόματη συμπλήρωση.

Πώς να αποθηκεύσετε την εργασία; Πώς να γράψετε μια κλάση προτύπου ή τις ετικέτες {varType} όσο το δυνατόν πιο εύκολα; Πάρτε τα που δημιουργούνται. Αυτό ακριβώς κάνει το ζεύγος ετικετών {templatePrint} και {varPrint}. Αν τοποθετήσετε μία από αυτές τις ετικέτες σε ένα πρότυπο, ο κώδικας της κλάσης ή του προτύπου εμφανίζεται αντί της κανονικής απόδοσης. Στη συνέχεια, απλά επιλέξτε και αντιγράψτε τον κώδικα στο έργο σας.

{templateType}

Οι τύποι των παραμέτρων που περνούν στο πρότυπο δηλώνονται με τη χρήση class:

{templateType MyApp\CatalogTemplateParameters}

{varType}

Πώς δηλώνουμε τύπους μεταβλητών; Για το σκοπό αυτό χρησιμοποιήστε την ετικέτα {varType} για μια υπάρχουσα μεταβλητή, ή {var}:

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

{templatePrint}

Μπορείτε επίσης να δημιουργήσετε αυτή την κλάση χρησιμοποιώντας την ετικέτα {templatePrint}. Αν την τοποθετήσετε στην αρχή του προτύπου, εμφανίζεται ο κώδικας της κλάσης αντί του κανονικού προτύπου. Στη συνέχεια, απλά επιλέξτε και αντιγράψτε τον κώδικα στο έργο σας.

{varPrint}

Η ετικέτα {varPrint} σας εξοικονομεί χρόνο. Εάν την τοποθετήσετε σε ένα πρότυπο, εμφανίζεται η λίστα των ετικετών {varType} αντί της κανονικής απόδοσης. Στη συνέχεια, απλά επιλέξτε και αντιγράψτε τον κώδικα στο πρότυπό σας.

Η ετικέτα {varPrint} απαριθμεί τοπικές μεταβλητές που δεν είναι παράμετροι του προτύπου. Αν θέλετε να παραθέσετε όλες τις μεταβλητές, χρησιμοποιήστε το {varPrint all}.