0

升级 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);
    }

没有 isset?我想检查是否不是 NULL,因为get_var方法返回 null

还是 if ($CI->load->get_var($key))) {检查足够?

4

1 回答 1

1

您不能isset在函数上使用

$CI->load->get_var($key)总是会返回“某物”——但“某物”是什么取决于。

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

if ($CI->load->get_var($key)) != null)  {
        $val = $CI->load->get_var($key);
    }
于 2012-10-06T06:06:16.767 回答