use Psr¥Http¥Message¥ResponseInterface as Response; class HomeController { // 1クラスに「1つしかメソッドを書くつもりがない」場合、こういった書き方もできる public function __invoke(Request $request, Response $response, $args) { // 出力 $response->getBody()->write("Top Page"); return $response; } }
「何に使うか」は後回しにして、まずは「使える」ようにしま しょう https://www.slimframework.com/docs/v4/concepts/di. html を参考に最低限書いてみる ……とエラーになるので必要なものを追加でinstall Fatal error: Uncaught Error: Class "DI¥Container" not found composer require php-di/slim-bridge
'/../vendor/autoload.php'; // Create Container using PHP-DI $container = new Container(); // Set container to create App with on AppFactory AppFactory::setContainer($container); $app = AppFactory::create(); // ルーティングの読み込み require __DIR__ . '/../config/routes.php'; $app->run();
as Request; use Psr¥Http¥Message¥ResponseInterface as Response; class HomeController { public function __construct( private Container $container, ) { } // XXX 1クラスに「1つしかメソッドを書くつもりがない」場合、こういった書き方もできる public function __invoke(Request $request, Response $response, $args) { // 出力 var_dump($this->container ?? null); $response->getBody()->write("Top Page"); return $response; } }