我最近开始使用Zend Studio,它报告了以下类型的代码:
$q = query("select * from some_table where some_condition");
while ($f = fetch($q)) {
// some inner workings
}
Run Code Online (Sandbox Code Playgroud)
要停止警告,代码需要像这样写:
$q = query("select * from some_table where some_condition");
$f = fetch($q);
while ($f) {
// some inner workings
$f = fetch($q);
}
Run Code Online (Sandbox Code Playgroud)
为什么这被标记为警告?这么糟糕吗?
我知道警告可能旨在阻止这样的错误:
$a = 1;
while ($a = 1) {
// some inner workings
$a++;
}
Run Code Online (Sandbox Code Playgroud)
永远不会终止,因为1被分配给$ a,而$ a又返回1到while语句,而不是针对$ a进行测试,并且当$ a不是1时,将false返回到while语句.
容易出错的错误可以验证警告,但是在第二个例子中忘记在while块的末尾添加额外的$ f = fetch($ q),这也会导致永远不会终止的循环.如果我更改我的代码以删除警告,然后忘记在while块的末尾添加$ f = fetch($ q),Zend将不会发出警告!
因此,通过删除有关常见错误的警告,我正在为自己设置一个不同的常见错误.
走出锅,进入火中.
warnings zend-framework variable-assignment while-loop conditional-statements