szepeviktor/phpstan-wordpress

Move dynamic return type extensions into wordpress-stubs

johnbillion opened this issue · 5 comments

@szepeviktor PHPStan 1.6 added support for conditional return types in docblocks, eg @return ($as_float is true ? float : string).

Some of the dynamic return type extensions (eg. CurrentTimeDynamicFunctionReturnTypeExtension) could be replaced by a conditional return type doc in the wordpress-stubs repo instead. Then we'd only need dynamic return type extensions for functions with more complicated logic.

What do you think? Worth doing?

Example (untested):

/**
 * @phpstan-return ($type is 'timestamp'|'U' ? int : string)
 */
function current_time( $type, $gmt = false) {}

PHPStan 1.6 added support for conditional return types

I go crazy!
You have to know I'm old-fashioned guy: keep a Single type in a variable.

As for the answer: I have no clue how to manipulate stubs in a sustainable fashion.
Keep a big array<Class::method, $returnTypeString>?

I would need to check but I think the existing functionMap file could be used.

Example:

'current_time' => '($type is \'timestamp\'|\'U\' ? int : string)',

All right.