我已经使用自定义的__isset()
函数很长时间了,这个函数主要是为了让代码看起来更好,也能节省打字时间:
function __isset(&$aVariable, $aDefault = null) {
return isset($aVariable) ? $aVariable : $aDefault;
}
但是今天我发现这个函数实际上会在变量不存在时创建它!当您检查数组属性时,这是一个巨大的问题:
$lArray = ('A', 'B', 'C');
$lValue = __isset($lArray[4], 'D');
print_r($lArray); // Outputs 0=>'A', 1=>'B', 2=>'C', 3=>NULL
我想要的是复制当前 PHP 中的
isset()
函数并将其更改为我想要的功能。问题在于我无法在 PHP 源代码中找到实际的 isset()
函数...许多框架都使用像我在第一个示例中展示的
isset()
函数,我无法想象我是第一个遇到这个问题的人。所以我的问题是:
- 在哪里可以找到实际的
isset()
PHP 函数? - 在哪里可以找到实际的
isset()
C 函数(真正的实现)? - 如何更改代码以返回值或指定的默认值?
isset()
函数并不能防止PHP在访问未设置的变量/索引时抛出警告。 - Touki