Pasar la configuración a los Presenters
¿Necesitas pasar argumentos a los Presenters que no son objetos (p. ej., información sobre si se ejecuta en
modo de depuración, rutas a directorios, etc.) y, por lo tanto, no se pueden pasar automáticamente mediante autowiring? La
solución es encapsularlos en un objeto Settings
.
El servicio Settings
representa una forma muy fácil y útil de proporcionar información sobre la aplicación en
ejecución a los Presenters. Su forma específica depende puramente de tus necesidades concretas. Ejemplo:
namespace App;
class Settings
{
public function __construct(
// desde PHP 8.1 es posible indicar readonly
public readonly bool $debugMode,
public readonly string $appDir,
// y así sucesivamente
) {}
}
Ejemplo de registro en la configuración:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Cuando un Presenter necesite la información proporcionada por este servicio, simplemente la solicitará en el constructor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}