Nette Documentation Preview

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

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

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

```php
namespace App;

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

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

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

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

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

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

{{sitename: Best Practices}}

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

Χρειάζεται να περάσετε ορίσματα σε παρουσιαστές που δεν είναι αντικείμενα (π.χ. πληροφορίες σχετικά με το αν εκτελείται σε κατάσταση εντοπισμού σφαλμάτων, διαδρομές καταλόγων κ.λπ.) και συνεπώς δεν μπορούν να περάσουν αυτόματα από την αυτόματη σύνδεση; Η λύση είναι να τα ενθυλακώσετε σε ένα αντικείμενο 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) {
			// ...
		}
	}
}