codeigniter无法访问受保护的属性MY_Loader :: $ _ ci_cached_vars

时间:2012-10-06 05:46:49

标签: php codeigniter

升级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))) {是否足够检查?

1 个答案:

答案 0 :(得分:1)

您无法在功能上使用isset

即。 $CI->load->get_var($key)将永远返回“某些东西” - 但“东西”取决于什么。

所以你是对的 - 下面的代码将实现你的目标。如果函数返回“null” - 则isset已经失败。如果函数返回其他内容(除了null) - 那么您将获得有效的返回。

if ($CI->load->get_var($key)) != null)  {
        $val = $CI->load->get_var($key);
    }