Передача параметров презентаторам
Вам нужно передавать презентерам аргументы, которые не
являются объектами (например, информацию о том, работает ли он в режиме
отладки, пути к каталогам и т.д.) и поэтому не могут быть переданы
автоматически с помощью автоподключения? Решение – инкапсулировать
их в объект Settings
.
Служба Settings
– это очень простой и полезный способ
предоставления информации о запущенном приложении докладчикам. Его
конкретная форма полностью зависит от ваших конкретных потребностей.
Пример:
namespace App;
class Settings
{
public function __construct(
// since PHP 8.1 it is possible to specify readonly
public bool $debugMode,
public string $appDir,
// and so on
) {}
}
Пример регистрации в конфигурации:
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) {
// ...
}
}
}