簡體   English   中英

codeigniter無法訪問受保護的屬性MY_Loader :: $ _ ci_cached_vars

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM