【问题标题】:PhpStorm - PHPDoc "any" type for parametersPhpStorm - 参数的 PHPDoc“任何”类型
【发布时间】:2016-09-27 08:40:42
【问题描述】:

我来自一种严格类型的编程语言,它的类型名为“ANY”。

因为 PHP 是松散耦合的,我需要为我的 PhpDoc 提供某种类型提示,说明变量、参数或返回值可以是任何类型。目前我必须写一些类似的东西:

@var string|int|bool|array|object $someVariable

如果我可以编写代码,我的生活会更轻松,代码也会更容易阅读:

@var any $someVariable

我实际上在很多情况下都遇到过这个问题——在过去的几个月里,我使用 PhpStorm 已经超过 20-30 次了,它向我显示了一些方法需要其他类型的参数类型的警告,要么因为我忘记将它明确地放在类型列表中,或者因为我使用的是用 Eclipse 编写的代码,它没有对我自称的“任何”类型显示任何警告。

我的问题:有没有办法告诉 PhpStorm 当我说 any 我实际上是指 string|any|bool|array|object 或者是否有其他类型的提示可以这样说?我也很好奇我是唯一一个有这个问题的人,还是有其他人这样工作。

【问题讨论】:

  • @var mixed $someVariable ?

标签: php phpstorm phpdoc type-hinting


【解决方案1】:

您应该为此使用“混合”。 PHP7.0 也有参数和返回值的实际类型提示。

【讨论】:

  • PHP 中的类型提示存在一个小问题。假设您有一个返回值“Bicycle”的类型提示。假设您想返回 null,这在其他语言中是完全合理的。在 PHP 中这是不可能的,因为 null 不是 Bicycle 类型。 (悲伤的脸)
  • 感谢您的提示 - 这正是我想要的 :)
  • @DavidMaes 现在可以在 7.1 版本中使用。
【解决方案2】:

PHP

伪类型和变量

混合

mixed 表示一个参数可以接受多种(但不一定是全部)类型。

gettype() 例如将接受所有 PHP 类型,而 str_replace() 将接受字符串和数组。

——PHP Manual

PHPDoc

mixed,此类型适用的元素可以是此处指定的任何类型。在编译时不知道将使用哪种类型。

——PSR-5

示例

/**
 * Counts the number of items in the provided array.
 *
 * @param mixed[] $items Array structure to count the elements of.
 *
 * @return int Returns the number of elements.
 */
function count(array $items)
{
    <...>
}

【讨论】:

    【解决方案3】:

    你有两个问题,我有两个答案。您问的是,当涉及到多种返回类型时,什么是好的做法。一个好的做法是根本不这样做。 (总是)确保你的方法只返回一种类型。这不仅会让你的方法更干净,而且调用方法的代码也会更干净;您永远不必检查类型,并且您始终知道作为返回值得到了什么,因此您将知道可以用它做什么。掌握一些架构技能并不难。

    【讨论】:

    • 总的来说,我同意拥有一个干净的类型处理架构很重要,但是当使用 ZF2 中的 ServiceManager 之类的东西时,它可以保存闭包、数组、对象实例和标量类型。这同样代表一个值映射器,它可以将任何东西映射到任何东西。在非常特殊的情况下,我需要这种“混合”类型提示。
    猜你喜欢
    • 2016-05-01
    • 2017-02-06
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    相关资源
    最近更新 更多