PHP:代码检查器,因为PHP是一种松散的类型/动态语言?

Eri*_*c B 0 php dynamic-languages weak-typing loose-typing

我有一个基于Web的小型PHP应用程序,它的大小开始适度增长.

鉴于PHP是一种松散/弱类型的动态语言,我开始关注管理我的PHP代码库.

其他人如何管理基于松散/弱类型的动态语言的代码?

是否存在PHP的预解析器,允许我在我的代码库上运行检查以识别下面的内容?

$var1 = 'data';
// vr1 doesn't exist, it's a typo of $var1, but PHP would allow for this and not complain
echo $vr1;
Run Code Online (Sandbox Code Playgroud)

更新:

上面的例子可能不是最好的例子,但实质上,我想要传达的是,只有当代码在RUN TIME的生产中运行时才能找到动态弱类型语言中的某些错误.然而,其中一些问题通常会在COMPILE时在强类型静态语言中找到.

在将代码转移到生产环境中之前,如何在不创建疯狂数量的单元测试的情况下,如何在PHP中找到这些非算法类型的错误?

因此,在进入生产之前我是否可以通过它运行我的PHP代码,并且这个预处理器解析我的代码以确保我只使用已定义的变量等等.本质上,请检查我的代码以进行验证非算法类型的用途.例如,不尝试对字符串执行代数等.

更新2

请注意,这个问题仍然没有得到解答,因为我正在寻找一种方法来在PHP中以"编译"类型识别这些类型的非算法错误,而不是RUN TIME.

Gor*_*don 10

你可以使用lint你的PHP php -l filename.php.这将显示任何语法错误.在编写代码时,会有一些IDE会丢失.除了linting之外,通常还可以检测问题中显示的问题.

除此之外,考虑为您的代码编写UnitTests以确保功能,并查看http://phpqatools.org以获取可帮助您提高代码质量的许多其他工具.

error_reporting(-1);除了在php.ini中启用display_errors和启用之外,请确保在开发期间设置了所有错误display_startup_errors.在生产系统上禁用后两者以防止暴露服务器信息.

更新后编辑: PHP源代码即时编译.PHP的编译时间在运行时是有效的.如果你想编译PHP,你必须使用Facebook的HipHop.

  • @Eric对于几乎所有代码行编写测试都不是不现实的,也不常见.打字错误通常会破坏某个地方.如果你有一个`函数add($ var1,$ var2){return $ vr1 + $ var2; 它不会传递输入数据加起来的UnitTest测试. (2认同)