具有多个参数的静态方法的 PhpStorm 元文件语法

PhpStorm meta file syntax for static methods with multiple arguments

我正在使用自定义 PHP 框架并希望为其生成一个 .phpstorm.meta.php 文件。

我的工厂方法语法如下:

<?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

到目前为止我已经尝试过但没有成功的方法:

<?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,
        ],
    ];

}

如何让 PhpStorm 识别元文件中工厂的多个参数,以便它可以正确地进行自动完成和声明查找?

我看过 phpstorm meta docs,但似乎不是很深入。

嗯,正如作者所说。phpstorm.meta.php我可以很快给你一个明确的答案。

截至 2016.3,PhpStorm 仅匹配第一个参数值,这是硬编码的。

你看,这整个功能是从非常特殊的功能请求发展而来的,并且不断得到增强,但这部分仍然只能按照我描述的那样工作。

有一个稍微相关的请求https://youtrack.jetbrains.com/issue/WI-27832

欢迎 https://youtrack.jetbrains.com/issues/WI 讨论可能的方法。

此外,您现在使用的语法已过时,请参阅 https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata - sample.meta.php