CodeIgniter中对象方法的isset等价物是什么?

时间:2014-09-19 13:26:13

标签: php codeigniter

在我的CodeIgniter应用程序中,我在某些控制器中使用会话类(并非所有控制器),并且我在所有页面中都修复了固定的主题视图。我想在视图中使用session->setflash()。因此,对于不使用会话的控制器,我必须检查session->flashdata()是否已设置或可用。我尝试了以下内容:

<?php if (isset($this->session->flashdata('msg'))):;?>

它返回了以下错误:

  

致命错误:无法对函数调用的结果使用isset()(您   可以使用“null!== func()”而不是

当我尝试消息的建议时:

<?php if (null !== $this->session->flashdata('msg')):;?>

我收到以下错误:

  

致命错误:在非对象上调用成员函数flashdata()   在...

除了codeIgniter错误:

  

遇到严重错误:通知

     

消息:未定义的属性:CI_Loader :: $ session

     

文件名:themes / head.php

     

行号:44

1 个答案:

答案 0 :(得分:3)

如果您的控制器始终加载$this->load->library('session');

然后你就可以检查if($this->session->flashdata('msg')){/*do stuff*/}

否则您可以使用method_exists()

http://php.net/manual/en/function.method-exists.php

if(method_exists('CI_Session', 'flashdata') && $this->session->flashdata('msg')){
    echo $this->session->flashdata('msg');
}