自动检查类型不匹配
幻影
如果你想检查你的代码类型不匹配,你可以使用Phantm。您可以将其与Jenkins一起使用或与svn hook post-commit一起使用。
来自官方网站
Phantm 是一个用 Scala 编写的工具,可用于检测 PHP 应用程序中潜在的编程错误。它既适用于小型独立脚本,也适用于成熟的应用程序。phantm 代表“类型错误的 PHp 分析器”。
幻影需求
ant
sbt
Java 1.6 or higher
Scala 2.9.1 or higher
用法
$ ./phantm <target.php>
PHPLint
另一种检查 php 代码类型不匹配的方法是PHPLint。您可以将它与 Jenkins、svn 或其他工具一起使用。
来自官方网站
PHPLint 是 PHP 4 和 PHP 5 程序的验证器和文档器。PHPLint 通过透明的元代码扩展了 PHP 语言,可以驱动解析器对源代码进行更严格的检查。PHPLint 不仅仅是一个检查器:它实现了一种在 PHP 语言上实现的新的、强类型的语言。您可以考虑使用 PHPLint 从头开始构建程序,也可以检查和修复现有程序,或者您可以遵循快速而简单的 PHP 编程方式,然后在程序完成后添加 PHPLint 元代码。无论您选择何种策略,PHPLint 都可以让您的程序更安全、更可靠、有据可查并且错误大大减少。PHPlint 有很好的在线测试工具。
有关通过 PHPLint 处理类型的更多信息
用法
$ phplint <target.php>
手动检查类型不匹配
如果你想使用 PHPStorm 检查你的变量类型,你可以使用 PHPDoc metadata。但是更好地使用php:您可以启用 E_NOTICE 以报告未初始化的变量以捕获变量名称拼写错误。之后,您可以在您的函数中使用实例检查:
/**
* @param array $data - highlight for PHPStorm
* @param MySuperClass $row - highlight for PHPStorm
*/
function(array $data, MySuperClass $row)
{
// Error if $data is not an array
// Error if $row is not instance of MySuperClass
/* do something .... */
}
/**
* @param array $data - highlight for PHPStorm
* @param MySuperClass $row - highlight for PHPStorm
*/
function($data, $row)
{
if (!is_array($data))
{
throw new TypeException('$data is must be array');
}
if (!($row instanceof MySuperClass))
{
throw new TypeException('$data is must be array');
}
}
当开发人员使用TDD方法编写正确的代码时,我认为这是类型检查的最佳方式。非常好的解决方案,您可以在官方 php 文档或PHPUnit 官方中阅读。