问题是关于phpDocs,并描述数组参数。 例如,我有这样的代码
<?= $view['form']->getElement('number_of_doors_id'); ?>
并且phpStorm不理解'形式'键是什么。
我试过
/**
* @var $view['form'] \\Framework\Templating\Helper\FormHelper
*/
/**
* @params $view['form'] \\Framework\Templating\Helper\FormHelper
*/
答案 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[]
*/
等等