Предаване на параметри на презентатори
Имате ли нужда да предавате аргументи на презентаторите,
които не са обекти (напр. информация за това дали се изпълнява в режим
на отстраняване на грешки, пътища до директории и т.н.) и следователно
не могат да бъдат предадени автоматично с помощта на autoconnect? Решението
е да ги капсулирате в обект 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) {
// ...
}
}
}