这是什么“$ this - > session - > userdata(”datiPreventivo“);”进入CodeIgniter控制器类?

时间:2016-07-27 10:18:12

标签: php codeigniter codeigniter-2

我是一名Java开发人员(我经常使用Spring MVC来开发Java中的MVC Web应用程序),他对PHP非常了解,我必须处理一个使用 CodeIgniter 2.1.3

所以我对这个控制器方法的准确工作有以下疑问:

所以我有这个课程:

class garanzieValoreFlex extends CI_Controller {

    ..................................................... 
    ..................................................... 
    ..................................................... 

   public function index() {

        $this->load->model('Direct');
        $flagDeroga = "true" ;

        $this->session->userdata("flagDeroga");

        $data = $this->session->userdata("datiPreventivo");
        $this->load->model('GaranzieValoreFlexModel');

        $data = $this->session->userdata("datiPreventivo");
        $this->load->model('GaranzieValoreFlexModel');

        $this->load->view('garanziavalore/index_bootstrap',$data);
    }

}

我知道 garanzieValoreFlex 控制器类的 index()方法处理针对网址的HTTP请求: http://MYURL/garanzieValoreFlex ,显示 /views/garanzievalore/index_bootstrap.php 页面。

工作正常。唯一认为我无法理解的是这段代码到底是什么:

$data = $this -> session -> userdata("datiPreventivo");

你能帮我确切地做些什么吗?我认为它正在向HttpSession或类似的东西投入一些东西,但我绝对不确定它,我无法理解逻辑。

1 个答案:

答案 0 :(得分:2)

session是一个Codeigniter(CI)库(类),它允许数据在浏览器的多个页面调用中保持不变。在CI版本中,您使用的是“本机”PHP会话功能。但CI的session类确实模仿PHP的会话,因为数据存储在PHP关联array中。

该类有许多不同的方法来存储和检索用户定义的数据。函数userdata("index_to_data")是主要的类方法之一。它用于检索已存储在session类中的数据。

传递给userdata()的参数是session类数组$userdata中值的关键。因此,$this->session->userdata("datiPreventivo");会返回$userdata["datiPreventivo"]处存储的值。如果密钥(在本例中为“datiPreventivo”)不存在,则$this->session->userdata("datiPreventivo")将返回FALSE

您正在使用的代码中的某个位置会找到一条数据存储在会话中的行。代码行可能看起来像这样。

$newdata = array("datiPreventivo" => $something_value);
$this->session->set_userdata($newdata);

在代码中搜索“$ this-> session-> set_userdata”可能有助于了解为将来的页面加载准确保存的内容。

重要的是要知道CI的session类已在版本>中完全重写。 3.0所以current documentation可能对你没有多大帮助。您需要找到所用版本的文档,以了解有关session库的更多信息。我相信文档包含在您的版本的下载中,可以找到here