I am working with a custom PHP framework and would like to generate a .phpstorm.meta.php file for it.
The factory methods I have are of the following syntax:
<?php
// Models
$project = Loader::model('Transform', 'Project');
// returns instance of \Framework\Base\Model
$user = Loader::model('Base', 'User');
// returns instance of \Framework\Base\Model
$asset = Loader::model('Transform', 'Asset');
// returns instance of \Framework\Hunk\Transform\Model\Asset
// Helpers
$router = Loader::service('Router', 'Router');
// returns instance of \Framework\Hunk\Router\Service\Router
$helper = Loader::service('Transform', 'Helper');
// returns instance of \Framework\Hunk\Transform\Service\Helper
What I've tried so far with no luck:
<?php
namespace PHPSTORM_META {
/** @noinspection PhpUnusedLocalVariableInspection */
/** @noinspection PhpIllegalArrayKeyTypeInspection */
/** @noinspection PhpLanguageLevelInspection */
$STATIC_METHOD_TYPES = [
\Framework\Loader::model('Transform', '') => [
'' = '@',
'Product' instanceof \Framework\Base\Model,
'Asset' instanceof \Framework\Hunk\Transform\Model\Asset,
'Step' instanceof \Framework\Base\Model,
'Stage' instanceof \Framework\Base\Model,
],
\Framework\Loader::model('Hansel', '') => [
'' = '@',
'User' instanceof \Framework\Base\Model,
],
\Framework\Loader::service('Transform', '') => [
'' = '@',
'Helper' instanceof \Framework\Hunk\Transform\Service\Helper,
],
\Framework\Loader::service('Router', '') => [
'' = '@',
'Router' instanceof \Framework\Hunk\Router\Service\Router,
],
];
}
How can I get PhpStorm to recognize multiple arguments for the factories in the meta file so it can properly do autocompletion and declaration finding?
I have looked over the phpstorm meta docs, but they don't seem to be very in-depth.