【问题标题】:Php documenting array paramphp 记录数组参数
【发布时间】:2016-05-24 12:58:09
【问题描述】:

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

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

而 phpStorm 不明白什么是 'form' 键。

我试过了

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

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

【问题讨论】:

  • 看看[ here ]。 phpStorm 有问题。

标签: php phpdoc


【解决方案1】:

我想到的唯一解决方案是对数组使用多种类型,如下所示:

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

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

来自PHPDOC

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

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

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

【讨论】:

    【解决方案2】:

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

    /**
    * @var \Framework\Templating\Helper\FormHelper $form
    * @var \Framework\Templating\Helper\UrlHelper $url
    */
    
    extract($view);
    $form->getElement('number_of_doors_id');
    

    我见过的另一种方法是每个视图都有一个“viewModel”类:

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

    【讨论】:

    【解决方案3】:

    修改了@Robert 的答案并像这样解决了这个问题

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

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

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

    等等

    【讨论】:

    • 但它不起作用,因为它说 $view 数组中的非常关键是 FormHelper 类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2015-03-11
    • 2017-11-04
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多