如果在OR语句的第二个参数中,则调用未定义的函数function_exists()

时间:2013-12-30 13:12:31

标签: php

我有一些代码可以根据某些条件为每个环境启用或禁用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()

1 个答案:

答案 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') ) );