phpstan: use more class-string

This commit is contained in:
Dylan K. Taylor
2020-01-31 22:05:33 +00:00
parent f65bf76fd8
commit 89c6da13ac
7 changed files with 70 additions and 8 deletions

View File

@ -44,7 +44,10 @@ final class TileFactory{
* @phpstan-var array<class-string<Tile>, list<string>>
*/
private static $saveNames = [];
/** @var string[] base class => overridden class */
/**
* @var string[] base class => overridden class
* @phpstan-var array<class-string<Tile>, class-string<Tile>>
*/
private static $classMapping = [];
private function __construct(){
@ -119,6 +122,10 @@ final class TileFactory{
* @param string $baseClass Already-registered tile class to override
* @param string $newClass Class which extends the base class
*
* TODO: use an explicit template for param1
* @phpstan-param class-string<Tile> $baseClass
* @phpstan-param class-string<Tile> $newClass
*
* @throws \InvalidArgumentException if the base class is not a registered tile
*/
public static function override(string $baseClass, string $newClass) : void{
@ -131,7 +138,12 @@ final class TileFactory{
}
/**
* @phpstan-template TTile of Tile
* @phpstan-param class-string<TTile> $baseClass
*
* @return Tile (will be an instanceof $baseClass)
* @phpstan-return TTile
*
* @throws \InvalidArgumentException if the specified class is not a registered tile
*/
public static function create(string $baseClass, World $world, Vector3 $pos) : Tile{
@ -140,6 +152,7 @@ final class TileFactory{
assert(is_a($class, $baseClass, true));
/**
* @var Tile $tile
* @phpstan-var TTile $tile
* @see Tile::__construct()
*/
$tile = new $class($world, $pos);
@ -170,6 +183,9 @@ final class TileFactory{
return $tile;
}
/**
* @phpstan-param class-string<Tile> $class
*/
public static function getSaveId(string $class) : string{
if(isset(self::$saveNames[$class])){
return reset(self::$saveNames[$class]);