我有一些代码可以根据某些条件为每个环境启用或禁用APC。一切正常,但是当我以相反的顺序复制和粘贴一些if语句时,我得到了一个没有任何逻辑的未知PHP错误。我有PHP 5.5.7并且脚本在CLI模式下运行。
// Works fine
$test = ( function_exists('apc_fetch') || ini_get('apc.enabled') );
// Fail with "Call to undefined function function_exists()"
$test = ( ini_get('apc.enabled') || function_exists('apc_fetch') );
// Works fine because true do lazy check in OR
$test = ( true || function_exists('apc_fetch') );
// Fail with "Call to undefined function function_exists()"
$test = ( false || function_exists('apc_fetch') );
有人可以解释一下吗?这太好奇了。
当前的解决方案是将function_exists('apc_fetch')置于OR检查的第一个位置,但这不是解决方案......
编辑:@ dev-null-dweller得到了诀窍,问题是||之间的空间简单的非unicode字符和function_exists()
答案 0 :(得分:0)
好吧,我测试了这段代码
<?php
$test = ( false || function_exists('apc_fetch') );
var_dump($test);
?>
并获得此输出
bool(false)
所以它对我有用......有些奇怪的事情......你能试试吗?
$test = ( !function_exists('apc_fetch') && ini_get('apc.enabled') );
还是这个?
$test = ( false || ( function_exists('apc_fetch') ) );