Passando configurações para presenters
Você precisa passar argumentos para presenters que não são objetos (por exemplo, informação se está rodando
em modo debug, caminhos para diretórios, etc.), e portanto não podem ser passados automaticamente via autowiring? A solução
é encapsulá-los em um objeto Settings
.
O serviço Settings
representa uma maneira muito fácil e útil de fornecer informações sobre a aplicação em
execução aos presenters. Sua forma específica depende puramente de suas necessidades particulares. Exemplo:
namespace App;
class Settings
{
public function __construct(
// a partir do PHP 8.1 é possível usar readonly
public bool $debugMode,
public string $appDir,
// e assim por diante
) {}
}
Exemplo de registro na configuração:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Quando um presenter precisar das informações fornecidas por este serviço, ele simplesmente as solicitará no construtor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}