Σύστημα τύπων

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

  • το IDE να παρέχει σωστή αυτόματη συμπλήρωση (δείτε ενσωμάτωση)
  • η στατική ανάλυση να εντοπίσει σφάλματα

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

Οι δηλωμένοι τύποι είναι πληροφοριακοί και το 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(),
));

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

Από εκείνη τη στιγμή, το IDE σας μπορεί να παρέχει σωστή αυτόματη συμπλήρωση.

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

{templateType}

Δηλώνουμε τους τύπους των παραμέτρων που περνιούνται στο πρότυπο χρησιμοποιώντας μια κλάση:

{templateType MyApp\CatalogTemplateParameters}

{varType}

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

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

{templatePrint}

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

{varPrint}

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

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

έκδοση: 3.0