スリム 4.14.0 リリース

Slim 4.14.0 をリリースしました。成熟したリリースなので、変更点はほとんどなく、すべてが軽微なものであり、こちらで確認できます。

テンプレートジェネリックスを使用した型ヒント

このリリースでは テンプレートジェネリックドキュメントブロック をスリムに導入しています。

としてSlim\Appには、getContainer(): ?ContainerInterfaceメソッドがあるため、ジェネリックスドキュメントブロックを使用すると、このメソッドが呼び出されたときに実際に返される型を指定できます。すなわち、PHP-DI を使用していて、このコードがあるとします。

$container = $this->app->getContainer();
$entries = $container->getKnownEntryNames();

Psalm または PHPStan は、$containerが、DI\Containerのインスタンスであることを知りません。また、getKnownEntryNames()メソッドがあり、エラーメッセージを表示します。

PHP-DI を作成したことを静的アナライザーに伝えるために、Slim\App/** @var \Slim\App $app *//** @var \Slim\App<DI\Container> $app */に変更します。すると、PHPStan はgetKnownEntryNames()に対する有効なメソッド呼び出しであることを認識します。$container.

型ヒントの更新

コードベースの場合、Slim\Appインスタンス変数の型ヒントを使用している場合は、

  • /** @var \Slim\App<null> $app */(DI コンテナを使用していない場合)または
  • /** @var \Slim\App<\Psr\Container\ContainerInterface> $app */(使用している場合)に変更する必要があります。

上記で説明したように、使用しているコンテナの具体的なインスタンスを型ヒントすることもできます。