Πέρασμα ρυθμίσεων στους presenters
Χρειάζεστε να περάσετε ορίσματα στους presenters που δεν είναι
αντικείμενα (π.χ. πληροφορία αν τρέχουν σε debug mode, διαδρομές προς
καταλόγους κ.λπ.), και επομένως δεν μπορούν να περαστούν αυτόματα μέσω
autowiring; Η λύση είναι να τα ενσωματώσετε σε ένα αντικείμενο
Settings
.
Η υπηρεσία Settings
αποτελεί έναν πολύ εύκολο και ταυτόχρονα
χρήσιμο τρόπο παροχής πληροφοριών σχετικά με την τρέχουσα εφαρμογή
στους presenters. Η συγκεκριμένη της μορφή εξαρτάται αποκλειστικά από τις
δικές σας συγκεκριμένες ανάγκες. Παράδειγμα:
namespace App;
class Settings
{
public function __construct(
// από την PHP 8.1 είναι δυνατό να δηλωθεί readonly
public bool $debugMode,
public string $appDir,
// και ούτω καθεξής
) {}
}
Παράδειγμα καταχώρησης στη διαμόρφωση:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Όταν ο presenter χρειαστεί τις πληροφορίες που παρέχονται από αυτή την υπηρεσία, απλά θα τη ζητήσει στον constructor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}