【发布时间】:2014-02-18 23:42:08
【问题描述】:
我是强类型语言的支持者,但我正在从事一个大型 PHP 项目。
我一直在使用 PhpStorm,我喜欢您可以提供的额外类型提示,例如这些 cmets:
/** @var \Payments $payment */
/** @property \Payments $payment */
PhpStorm 很棒,因为它会在类型不匹配时给您一些警告。
我想知道在 PhpStorm 之外是否也可以静态地进行这种检查。 某些命令行预编译器会遍历代码,同时检查那些额外的提示,以在检测到不匹配时显示一些错误。
用 phpcs 可以做到吗?
我的最终目标是拥有一个自动工具,可以在类型不匹配时提醒我。
我什至考虑切换到 HHVM 以获得更好的类型提示。但我不相信 HHVM 还可以在生产环境中运行。
理想情况下,在 HHVM 上开发额外的类型提示会很棒,但代码无法在我想继续生产的 Zend PHP 引擎上运行。
有什么想法吗?
谢谢。
【问题讨论】:
-
PHPStorm 通常会提醒您如果它知道类型不匹配。因此,如果您有一个函数
/** @returns int */ getInt(),并且您说/** @var boolean $boolean */ $boolean = getInt(),则会出现错误,因为PHPStormgetInt()返回一个整数而不是布尔值。更智能的东西可能需要能够运行 PHP(未预编译),所以像 PHPUnit 或 xDebug 这样的调试套件可能会有所帮助? -
您是否考虑过使用像 Jenkins 这样的构建服务器?您可以自动部署到那里的目标服务器,并在允许部署之前检查单元测试以及各种语法和代码样式工具。所有这些都可以在任何 SVN 提交后自动完成。
-
似乎还没有人理解你的问题。我是否正确,您正在使用 PHPStorm 通过 phpdoc cmets 对类型进行自动检查?您不是在搜索有关如何使用类型创建代码或如何使 PHPStorm 做到这一点的信息?如果是这样,您可能需要澄清您的问题,因为当前的答案有误... ;)
-
@ToBe Jenkins 使用测试工具作为 CodeSniffer 和其他工具。它没有测试工具
-
@Dmitriy.Net 没错。这不是他想要的吗?