当前位置:  开发笔记 > 编程语言 > 正文

PHP相当于Perl的'use strict'(要求变量在使用前初始化)

如何解决《PHP相当于Perl的'usestrict'(要求变量在使用前初始化)》经验,为你挑选了1个好方法。

Python的约定是变量是通过第一次赋值创建的,并且在分配一个变量之前尝试读取它们的值会引发异常.相比之下,PHP在读取时会隐式创建一个变量,并带有空值.这意味着在PHP中很容易做到这一点:

function mymodule_important_calculation() {
    $result = /* ... long and complex calculation ... */;
    return $resukt;
}

此函数始终返回null,如果null是functuion的有效值,则bug可能会在一段时间内未被检测到.Python等价物会抱怨变量resukt在分配之前被使用.

那么......有没有办法将PHP配置为更严格的变量赋值?



1> Kent Fredric..:

PHP在解析时没有做太多的事情检查.

你能做的最好的事情是提高你的警告级别以报告你的错误,但是当你得到E_NOTICE时,它太晚了,并且不可能提前强制E_NOTICES发生.

很多人都在使用"error_reporting E_STRICT"标志,但它仍然是追溯性警告,并且不会像你发布的那样保护你免受错误的代码错误.

这个宝石出现在本周的php-dev邮件列表中,我认为它只是你想要的工具.它更像是一个lint-checker,但它增加了当前lint检查PHP的范围.

PHP初始化的Google项目

希望通过一些关注我们可以在PHP本身中实现这种行为.所以把你的2美分放在PHP邮件列表/ bug系统/功能请求上,看看我们是否可以鼓励它的集成.


这不一定太晚,或者你把未经测试的代码扔给世界?我同意最好让它在解析时失败,但是说它为时已晚表明你甚至没有测试它:-)
好吧,取决于你写测试用例有多好.并且取决于您的测试用例是否具有可变的错误输入(这是不被注意的).接下来,测试案例的测试用例?
推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有