Passagem de configurações para os apresentadores
Você precisa passar argumentos aos apresentadores que não são objetos (por exemplo, informações sobre se
está funcionando em modo de depuração, caminhos de diretório, etc.) e, portanto, não pode ser passado automaticamente por
cabeamento automático? A solução é encapsulá-los em um objeto Settings
.
O serviço Settings
é uma maneira muito fácil, porém útil de fornecer informações sobre uma aplicação em
execução para os apresentadores. Sua forma específica depende inteiramente de suas necessidades particulares. Exemplo:
namespace App;
class Settings
{
public function __construct(
// desde PHP 8.1 é possível especificar somente leitura
public bool $debugMode,
public string $appDir,
// and so on
) {}
}
Exemplo de registro para a configuração:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Quando o apresentador precisa das informações fornecidas por este serviço, ele simplesmente as pede ao construtor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}