Php 记录数组参数

Php documenting array param

问题是关于 phpDocs 和描述数组参数的。 例如我有这样的代码

<?= $view['form']->getElement('number_of_doors_id'); ?>

而且 phpStorm 不理解 'form' 键是什么。

我试过了

/**
* @var $view['form'] \Framework\Templating\Helper\FormHelper
*/

/**
* @params $view['form'] \Framework\Templating\Helper\FormHelper
*/

我想到的唯一解决方案是像这样对数组使用多种类型:

/**
* @var (\Framework\Templating\Helper\FormHelper|int)[] $view
*/

其中 int 是数组键的另一种类型

来自 PHPDOC

specified containing multiple types, the Type definition informs the reader of the type of each array element. Each element can be of any of the given types. Example: @return (int|string)[]

另一种选择是将此数组变量赋值给普通变量。

我认为目前没有其他可能。

在类似的情况下,我最终从数组中提取变量并具有单独的 @var 块:

/**
* @var \Framework\Templating\Helper\FormHelper $form
* @var \Framework\Templating\Helper\UrlHelper $url
*/

extract($view);
$form->getElement('number_of_doors_id');

我看到的另一种选择是每个视图有 'viewModel' class:

class AboutViewModel
{
    /**
    * @var \Framework\Templating\Helper\FormHelper $form
    * @var \Framework\Templating\Helper\UrlHelper $url
    */
    public $form,
           $url;

}

在你看来

/**
* @var \Framework\Views\AboutViewModel $vm
*/
$vm->form->getElement('number_of_doors_id');

修改了@Robert的回答,解决了这个问题

<?php
    /**
    * @var $view \Framework\Templating\Helper\FormHelper[]
    */
?>

如果你需要两种不同的类型,就这样做

/**
 * @var $view \Framework\Templating\Helper\FormHelper[]|\Framework\Templating\Helper\TranslatorHelper[]
 */

以此类推