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