Transmisión de ajustes a los presentadores
¿Necesita pasar argumentos a los presentadores que no son objetos (por ejemplo, información sobre si se está
ejecutando en modo de depuración, rutas de directorios, etc.) y que, por tanto, no se pueden pasar automáticamente mediante
autocableado? La solución es encapsularlos en un objeto Settings
.
El servicio Settings
es una forma muy sencilla y útil de proporcionar información sobre una aplicación en
ejecución a los presentadores. Su forma concreta depende enteramente de sus necesidades particulares. Ejemplo:
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
) {}
}
Ejemplo de inscripción a la configuración:
services:
- App\Settings(
%debugMode%,
%appDir%,
)
Cuando el presentador necesita la información proporcionada por este servicio, simplemente la solicita en el constructor:
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}