PhpStorm:extract()标识变量

时间:2016-12-04 10:05:24

标签: php phpstorm extract

有谁知道PhpStorm中是否有可以触发使用extract()函数生成的识别变量的设置?

示例如下所示:

/**
 * @return array
 */
protected function orderSet() : array
{
    //...

    return [
        'colour' => $colour,
        'green' => $green,
        'orange' => $orange
    ];
}


/**
 * @test
 */
public function returns_correct_attribute_names()
{
    $params = $this->orderSet();
    extract($params);

    $this->assertEquals(
        'Colour',
        $colour->name
    );
}

目前,在测试中提取的任何变量都会突出显示(无法识别),但是可能有一个设置可以改变此行为?

1 个答案:

答案 0 :(得分:9)

LazyOne提供的解决方案确实有效。但是,为了实现它,您需要更多的上下文。

要准确告知PHPSTORM您要声明的变量评论必须 ,而不是父函数

   public function db(){
    $db = new SQLite3('db/mysqlitedb.db');

    $payments = $db->query('SELECT * FROM payments');

    while ($pay = $payments->fetchArray()){
        /**
         * @var string $to_user
         * @var string $from_user
         * @var number $amount
         */
        extract($pay);
        if (isset($to_user, $from_user, $amount))
            echo "TO: {$to_user}| FROM: {$from_user}| $ {$amount} \n";
    };
}

这是我的代码中的一个工作样本(由于某种原因无法复制你的代码)。

你可以在我使用 extract()函数之前看到我在其上面的注释块中声明隐藏的变量和数据类型。

额外奖励:如果您打算使用数据提取,我强烈建议您使用isset来确保您正在解析的数组包含您期望的字段。 上面代码中的示例