【问题标题】:CodeIgniter 3, pass $data to view: $this->data[] VS $data[]CodeIgniter 3,将 $data 传递给视图:$this->data[] VS $data[]
【发布时间】:2015-10-04 03:31:10
【问题描述】:

我读了this question,但它对我帮助不大...

使用Ion_auth 库我注意到视图的数据是由$this->data[] 传递的,而不是简单的$data

为什么?这样做的区别或优势在哪里?

【问题讨论】:

  • 你知道 oop 中的 $this 是什么吗?
  • 是的,我知道的更多还是小姑娘……但真正的优势是什么? $data 变量只能在该类中使用还是什么?

标签: php codeigniter model-view-controller ion-auth


【解决方案1】:

使用 $this->data 意味着您可以利用父控制器的 OOP 继承。父控制器(例如 MY_controller)可以设置一些初始数据,这些数据在所有扩展它的控制器中都可用。

这里有一个例子: http://avenir.ro/codeigniter-tutorials/creating-working-with-my_controller-codeigniter/

【讨论】:

    【解决方案2】:

    $this->data[] 这意味着你必须在你的类中定义$data 成员,

    $this引用的是当前对象,就是当前类

    当你定义时

    Class Oop
    {
        private $data = array();
    
        function test()
        {
            $this->data['title'] = 'Home';
            echo $this->data['title']; //access like this
        }
    }
    

    在codeigniter中$data是一个数组

    在控制器中你可以$data['title'] = 'Home'; 然后在视图中你可以像$title;一样访问它

    请参考thisoop

    【讨论】:

    • 好的,谢谢 Jlocke,但我想知道真正的优势。例如:在第 81 行的控制器 Auth.php(ion_auth 库)中有: $this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');在第 93 行: $this->_render_page('auth/login', $this->data);但是如果我改变 $data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');和 $this->_render_page('auth/login', $data);结果是完全一样的。那么为什么在不需要的时候使用 $this 呢?
    • @FraOre 检查 _render_page() 函数和库然后你会意识到
    猜你喜欢
    • 2010-12-16
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多