プレゼンターへの設定の受け渡し
オートワイヤリングでは自動的に渡せない、オブジェクトでない引数(デバッグモードを示すフラグ、ディレクトリのパスなど)をプレゼンターに渡す必要がありますか。その答えは、それらを専用の
Settings オブジェクトにまとめることです。
Settings
サービスは、動いているアプリケーションについての情報をプレゼンターに届ける、とても単純ながら効果的な方法です。その具体的な構造は、あなたの必要に完全に委ねられています。例を挙げます。
namespace App;
class Settings
{
public function __construct(
// PHP 8.1 以降は readonly が使えます
public bool $debugMode,
public string $appDir,
// など
) {}
}
設定での登録の例です。
services:
- App\Settings(
%debugMode%,
%appDir%,
)
このサービスが提供する情報をプレゼンターが必要とするなら、コンストラクタでそれを要求するだけです。
class MyPresenter extends Nette\Application\UI\Presenter
{
public function __construct(
private App\Settings $settings,
) {}
public function renderDefault()
{
if ($this->settings->debugMode) {
// ...
}
}
}