Передача налаштувань у презентери
Вам потрібно передавати в презентери аргументи, які не є
об'єктами (наприклад, інформацію про те, чи працює додаток у режимі
налагодження, шляхи до каталогів тощо), і тому їх не можна передати
автоматично за допомогою autowiring? Рішенням є інкапсуляція їх в об'єкт
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) {
// ...
}
}
}