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なし?get_varメソッドがnullを返すため、が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 に答える