![](/img/trans.png)
[英]Cannot access protected property MY_Loader::$_ci_cached_vars and extract cached variables
[英]codeigniter Cannot access protected property MY_Loader::$_ci_cached_vars
升级Codeigniter后,我收到此消息
无法访问受保护的属性MY_Loader :: $ _ ci_cached_vars
我知道此属性现在受到保护,所以我更改了
else if (isset($CI->load->_ci_cached_vars[$key]))
{
$val = $CI->load->_ci_cached_vars[$key];
}
至
if (isset($CI->load->get_var($key)))
{
$val = $CI->load->get_var($key);
}
但后来我明白了
在写上下文中不能使用方法返回值
这是get_var
方法
/**
* Get Variable
*
* Check if a variable is set and retrieve it.
*
* @param array
* @return void
*/
public function get_var($key)
{
return isset($this->_ci_cached_vars[$key]) ? $this->_ci_cached_vars[$key] : NULL;
}
我该怎么办,只需使用
if ($CI->load->get_var($key)) != null) {
$val = $CI->load->get_var($key);
}
没有烦恼? 我想检查是否不为NULL, get_var
方法返回null
还是if ($CI->load->get_var($key))) {
检查是否足够?
您不能在函数上使用isset
即$CI->load->get_var($key)
将始终返回“某物”-但是该“某物”取决于什么。
因此,您是正确的-以下代码将实现您的目标。 如果函数返回“ null”-那么isset已经失败。 如果函数返回其他值(除null外)-那么您将获得有效的返回值。
if ($CI->load->get_var($key)) != null) {
$val = $CI->load->get_var($key);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.