Php记录数组参数

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

标签: php phpdoc

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

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

并且phpStorm不理解'形式'键是什么。

我试过

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

来自PHPDOC

  

指定包含多个类型,Type定义通知   每个数组元素类型的读者。每个元素都可以是任何元素   给定类型。示例:@return(int | string)[]

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

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

答案 1 :(得分:1)

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

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

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

我见过的一个替代方案是拥有一个&#39; viewModel&#39;每个视图的类:

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');

答案 2 :(得分:0)

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

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

如果你需要两种不同的类型,那就

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

等等