ChatGPT解决这个技术问题 Extra ChatGPT

JetBrains WebIDE:PHP 变量类型提示?

有没有办法提示 WebIDE 变量具有某种类型?我必须迭代一个对象数组,并且没有可用的自动完成功能。这有助于 ZendStudio:

/* @var ClassName $object */

我知道 JetBrains 中有一个功能可以声明对象数组:

/**
 * @return ClassName[]
 */

但这仅适用于函数的返回类型。

它适用于数组。它是否适用于遍历特定类型的 ArrayIterators?

A
Alexey Gopachenko

/* @var ClassName $object */ 是无效的 PHPDOC 注释,在当前版本的 Web IDE 中未解析。使用双星号使其工作:

/** @var ClassName $object */

此外,您可以在 foreach($array as $var) 中使用 /** @var ClassName[] $array */ 注释 $array,并且会自动推断出 $var 类型。


不知道方括号符号
相关问题:我的 PHP 类对变量使用魔术 getter,我想将该 getter 变量绑定到 Class 对象,知道该怎么做吗?因为我无法在我的班级中定义变量。
哇.. 只是为了好玩而在谷歌上搜索,真的不希望这真的是一件事.. 我这辈子从来没有这么错,我很高兴我错了!这个功能太棒了,谢谢! :)
与 Symfony 应用程序中控制器内的 $this->getUser() 非常相关
Á
Álvaro González

正如已经指出的,PhpStorm 将使用常规的 phpdoc 块:

/** @var ClassName $object */

但是,由于 2.1,它还支持 Netbeans/Eclipse/Zend @var annotations

/* @var $object ClassName */

请注意注释以 /* 而不是 /** 开头(因此,如果您使用 phpdoc 生成实际文档,它将不会显示)。此外,尽管 PhpStorm 接受任何顺序,但参数被交换:

/* @var ClassName $object */

最后但并非最不重要的一点是,它们几乎可以位于任何任意代码行之前(从技术上讲,phpdoc 块仅限于某些项目)。

编辑:截至 2019 年,Netbeans/Eclipse/Zend @var 注释似乎大多被放弃了。 NetBeans 11 不再支持它们,通常其他 IDE 也不支持它们。我建议使用其他语法。


在前 Netbeans 所有者 Oracle 的博客上介绍这种注释样式的最后存档:web.archive.org/web/20200921104605/https://blogs.oracle.com/…
@ReinState 答案已更新,谢谢!