Μεταβίβαση ρυθμίσεων σε παρουσιαστές

Χρειάζεται να περάσετε ορίσματα σε παρουσιαστές που δεν είναι αντικείμενα (π.χ. πληροφορίες σχετικά με το αν εκτελείται σε κατάσταση εντοπισμού σφαλμάτων, διαδρομές καταλόγων κ.λπ.) και συνεπώς δεν μπορούν να περάσουν αυτόματα από την αυτόματη σύνδεση; Η λύση είναι να τα ενθυλακώσετε σε ένα αντικείμενο Settings.

Η υπηρεσία Settings είναι ένας πολύ εύκολος αλλά και χρήσιμος τρόπος για να παρέχετε πληροφορίες σχετικά με μια εφαρμογή που εκτελείται στους παρουσιαστές. Η συγκεκριμένη μορφή της εξαρτάται εξ ολοκλήρου από τις ιδιαίτερες ανάγκες σας. Παράδειγμα:

namespace App;

class Settings
{
	public function __construct(
		// από την PHP 8.1 είναι δυνατό να καθορίσετε readonly
		public bool $debugMode,
		public string $appDir,
		// και ούτω καθεξής
	) {}
}

Παράδειγμα εγγραφής στη διαμόρφωση:

services:
	- App\Settings(
		%debugMode%,
		%appDir%,
	)

Όταν ο παρουσιαστής χρειάζεται τις πληροφορίες που παρέχει αυτή η υπηρεσία, απλώς τις ζητάει στον κατασκευαστή:

class MyPresenter extends Nette\Application\UI\Presenter
{
	public function __construct(
		private App\Settings $settings,
	) {}

	public function renderDefault()
	{
		if ($this->settings->debugMode) {
			// ...
		}
	}
}