Διαμόρφωση εφαρμογών

Επισκόπηση των επιλογών διαμόρφωσης για τις Εφαρμογές Nette.

Application

application:
	# εμφάνιση του πίνακα "Nette Application" στο Tracy BlueScreen;
	debugger: ...           # (bool) προεπιλογή είναι true

	# θα κληθεί ο error-presenter σε περίπτωση σφάλματος;
	# ισχύει μόνο σε κατάσταση ανάπτυξης
	catchExceptions: ...    # (bool) προεπιλογή είναι true

	# όνομα του error-presenter
	errorPresenter: Error   # (string|array) προεπιλογή είναι 'Nette:Error'

	# ορίζει ψευδώνυμα για presenters και actions
	aliases: ...

	# ορίζει κανόνες για τη μετάφραση του ονόματος του presenter σε κλάση
	mapping: ...

	# οι μη έγκυροι σύνδεσμοι δεν δημιουργούν προειδοποιήσεις;
	# ισχύει μόνο σε κατάσταση ανάπτυξης
	silentLinks: ...        # (bool) προεπιλογή είναι false

Από την έκδοση nette/application 3.2, μπορείτε να ορίσετε ένα ζεύγος error-presenters:

application:
	errorPresenter:
		4xx: Error4xx   # για την εξαίρεση Nette\Application\BadRequestException
		5xx: Error5xx   # για άλλες εξαιρέσεις

Η επιλογή silentLinks καθορίζει πώς συμπεριφέρεται το Nette στην κατάσταση ανάπτυξης όταν η δημιουργία ενός συνδέσμου αποτυγχάνει (για παράδειγμα, επειδή ο presenter δεν υπάρχει, κ.λπ.). Η προεπιλεγμένη τιμή false σημαίνει ότι το Nette θα δημιουργήσει ένα σφάλμα E_USER_WARNING. Η ρύθμιση σε true θα καταστείλει αυτό το μήνυμα σφάλματος. Στο περιβάλλον παραγωγής, το E_USER_WARNING δημιουργείται πάντα. Αυτή η συμπεριφορά μπορεί επίσης να ελεγχθεί ορίζοντας τη μεταβλητή του presenter $invalidLinkMode.

Τα Ψευδώνυμα απλοποιούν τη σύνδεση σε συχνά χρησιμοποιούμενους presenters.

Η Αντιστοίχιση ορίζει κανόνες, σύμφωνα με τους οποίους το όνομα της κλάσης προκύπτει από το όνομα του presenter.

Αυτόματη καταχώρηση presenters

Το Nette προσθέτει αυτόματα τους presenters ως υπηρεσίες στο DI container, γεγονός που επιταχύνει σημαντικά τη δημιουργία τους. Ο τρόπος με τον οποίο το Nette βρίσκει τους presenters μπορεί να διαμορφωθεί:

application:
	# αναζήτηση presenters στο Composer class map;
	scanComposer: ...      # (bool) προεπιλογή είναι true

	# μάσκα που πρέπει να ταιριάζει με το όνομα της κλάσης και του αρχείου
	scanFilter: ...        # (string) προεπιλογή είναι '*Presenter'

	# σε ποιους καταλόγους να αναζητηθούν οι presenters;
	scanDirs:              # (string[]|false) προεπιλογή είναι '%appDir%'
		- %vendorDir%/mymodule

Οι κατάλογοι που αναφέρονται στο scanDirs δεν αντικαθιστούν την προεπιλεγμένη τιμή %appDir%, αλλά την συμπληρώνουν, οπότε το scanDirs θα περιέχει και τις δύο διαδρομές %appDir% και %vendorDir%/mymodule. Αν θέλουμε να παραλείψουμε τον προεπιλεγμένο κατάλογο, χρησιμοποιούμε ένα θαυμαστικό, το οποίο αντικαθιστά την τιμή:

application:
	scanDirs!:
		- %vendorDir%/mymodule

Η σάρωση καταλόγων μπορεί να απενεργοποιηθεί καθορίζοντας την τιμή false. Δεν συνιστούμε την πλήρη καταστολή της αυτόματης προσθήκης presenters, καθώς αυτό θα μειώσει την απόδοση της εφαρμογής.

Templates Latte

Με αυτή τη ρύθμιση, μπορείτε να επηρεάσετε καθολικά τη συμπεριφορά του Latte στα components και τους presenters.

latte:
	# εμφάνιση του πίνακα Latte στο Tracy Bar για το κύριο template (true) ή όλα τα components (all);
	debugger: ...        # (true|false|'all') προεπιλογή είναι true

	# δημιουργεί templates με την κεφαλίδα declare(strict_types=1)
	strictTypes: ...     # (bool) προεπιλογή είναι false

	# ενεργοποιεί την [κατάσταση αυστηρού parser |latte:develop#striktní režim]
	strictParsing: ...   # (bool) προεπιλογή είναι false

	# ενεργοποιεί τον [έλεγχο του παραγόμενου κώδικα |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) προεπιλογή είναι null

	# ορίζει το locale
	locale: cs_CZ        # (string) προεπιλογή είναι null

	# κλάση του αντικειμένου $this->template
	templateClass: App\MyTemplateClass # προεπιλογή είναι Nette\Bridges\ApplicationLatte\DefaultTemplate

Αν χρησιμοποιείτε την έκδοση 3 του Latte, μπορείτε να προσθέσετε νέες επεκτάσεις χρησιμοποιώντας:

latte:
	extensions:
		- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)

Αν χρησιμοποιείτε την έκδοση 2 του Latte, μπορείτε να καταχωρήσετε νέα tags (macros) είτε καθορίζοντας το όνομα της κλάσης είτε με αναφορά σε μια υπηρεσία. Ως προεπιλογή, καλείται η μέθοδος install(), αλλά αυτό μπορεί να αλλάξει καθορίζοντας το όνομα μιας άλλης μεθόδου:

latte:
	# καταχώρηση προσαρμοσμένων Latte tags
	macros:
		- App\MyLatteMacros::register         # στατική μέθοδος, όνομα κλάσης ή callable
		- @App\MyLatteMacrosFactory           # υπηρεσία με μέθοδο install()
		- @App\MyLatteMacrosFactory::register # υπηρεσία με μέθοδο register()

services:
	- App\MyLatteMacrosFactory

Δρομολόγηση

Βασικές ρυθμίσεις:

routing:
	# εμφάνιση του πίνακα δρομολόγησης στο Tracy Bar;
	debugger: ...   # (bool) προεπιλογή είναι true

	# σειριοποιεί τον router στο DI container
	cache: ...      # (bool) προεπιλογή είναι false

Η δρομολόγηση συνήθως ορίζεται στην κλάση RouterFactory. Εναλλακτικά, οι διαδρομές (routes) μπορούν επίσης να οριστούν στη διαμόρφωση χρησιμοποιώντας ζεύγη mask: action, αλλά αυτή η μέθοδος δεν προσφέρει τόσο μεγάλη ευελιξία στις ρυθμίσεις:

routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default

Σταθερές

Δημιουργία σταθερών PHP.

constants:
	Foobar: 'baz'

Μετά την εκκίνηση της εφαρμογής, θα δημιουργηθεί η σταθερά Foobar.

Οι σταθερές δεν πρέπει να χρησιμεύουν ως κάποιου είδους καθολικά διαθέσιμες μεταβλητές. Για τη μεταβίβαση τιμών σε αντικείμενα, χρησιμοποιήστε το dependency injection.

PHP

Ρύθμιση οδηγιών PHP. Μια επισκόπηση όλων των οδηγιών μπορείτε να βρείτε στο php.net.

php:
	date.timezone: Europe/Prague

Υπηρεσίες DI

Αυτές οι υπηρεσίες προστίθενται στο DI container:

Όνομα Τύπος Περιγραφή
application.application Nette\Application\Application εκκινητής ολόκληρης της εφαρμογής
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory factory για presenters
application.### Nette\Application\UI\Presenter μεμονωμένοι presenters
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory factory αντικειμένου Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory factory για $this->template
έκδοση: 4.0