Pasar ajustes a los presenters
¿Necesita pasar a los presenters argumentos que no son objetos (como una bandera que indica el modo de
depuración, rutas de directorios, etc.) y que no se pueden pasar automáticamente por autowiring? La solución es encapsularlos
en un objeto Settings dedicado.
El servicio Settings ofrece una forma muy sencilla pero eficaz de suministrar a los presenters información sobre
la aplicación en marcha. Su estructura concreta depende por completo de sus necesidades. Ejemplo:
namespace App;
class Settings
{
public function __construct(
// desde PHP 8.1 se puede usar readonly
public bool $debugMode,
public string $appDir,
// y así sucesivamente
) {}
}
Ejemplo de su registro en la configuración:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Cuando un presenter necesita la información que ofrece este servicio, simplemente se la pide en su constructor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}