PHP error_log 仍然可以在带有 break 的 switch 内部工作
PHP error_log still work inside switch with break
我以为我的代码中有错误,但通过隔离问题,我发现了 switch case 中 error_log() 的一些 'weird' 行为。
我添加了一些 error_log 用于调试,但是每当我 运行 切换开关时,即使调用是在有效案例。
这里是我的代码中让我发现这个奇怪之处的确切部分:
switch($LLTP->request()){
case 'json':
/* some code commented out for debug here */
error_log('json');
echo 'json';
break;
default:
/* some code commented out for debug here */
error_log('html');
echo 'html';
break;
}
请求方法简单明了,return像'json','html','ajax'
等字符串。
public function request(){
return $this->requests;
}
所以如果开关是 html,默认启动,我得到预期的结果:
echoing 'html' (expected)
errorlog 'html' (expected)
但是当我 运行 使用 'json' 开关时,我在屏幕上和 error_log 内部得到了预期的 'json',但我也得到了 'html' 错误条目(没有回显)。
echoing 'json' (expected)
errorlog 'json' (expected)
errorlog 'html, referer: https://www.example.com/home.json' (unexpected)
这是正常行为吗?我第一次注意到它,如果我尝试用另一个示例代码重现 'weirdness':
$vv='json';
switch($vv){
case 'json':
echo 'json';
error_log('json');
break;
default:
echo 'html';
error_log('html');
break;
}
我明白了,(在错误日志中)
[error] json (expected)
[error] json, referer: http://www.example.com/home.json (unexpeted as
it's the second entry in the log)
我迷路了,有些地方我不明白或预期的结果不是我预期的。
PS: 我不在页面上输出错误,我只在日志中记录错误。如果这与它有任何关系o.O
今天我找到了原因。
当我测试时,我用我的浏览器欺骗了一个 json 请求。但每次我点击刷新时,我的浏览器也会发送对 favicon.ico 文件的请求。由于我没有为图像添加 mod_rewrite 规则,它被代码作为常规 html 请求处理,因此调用了开关的 html 部分。
我以为我的代码中有错误,但通过隔离问题,我发现了 switch case 中 error_log() 的一些 'weird' 行为。
我添加了一些 error_log 用于调试,但是每当我 运行 切换开关时,即使调用是在有效案例。
这里是我的代码中让我发现这个奇怪之处的确切部分:
switch($LLTP->request()){
case 'json':
/* some code commented out for debug here */
error_log('json');
echo 'json';
break;
default:
/* some code commented out for debug here */
error_log('html');
echo 'html';
break;
}
请求方法简单明了,return像'json','html','ajax'
等字符串。
public function request(){
return $this->requests;
}
所以如果开关是 html,默认启动,我得到预期的结果:
echoing 'html' (expected)
errorlog 'html' (expected)
但是当我 运行 使用 'json' 开关时,我在屏幕上和 error_log 内部得到了预期的 'json',但我也得到了 'html' 错误条目(没有回显)。
echoing 'json' (expected)
errorlog 'json' (expected)
errorlog 'html, referer: https://www.example.com/home.json' (unexpected)
这是正常行为吗?我第一次注意到它,如果我尝试用另一个示例代码重现 'weirdness':
$vv='json';
switch($vv){
case 'json':
echo 'json';
error_log('json');
break;
default:
echo 'html';
error_log('html');
break;
}
我明白了,(在错误日志中)
[error] json (expected)
[error] json, referer: http://www.example.com/home.json (unexpeted as it's the second entry in the log)
我迷路了,有些地方我不明白或预期的结果不是我预期的。
PS: 我不在页面上输出错误,我只在日志中记录错误。如果这与它有任何关系o.O
今天我找到了原因。
当我测试时,我用我的浏览器欺骗了一个 json 请求。但每次我点击刷新时,我的浏览器也会发送对 favicon.ico 文件的请求。由于我没有为图像添加 mod_rewrite 规则,它被代码作为常规 html 请求处理,因此调用了开关的 html 部分。