CodeIgniter 2和$ this->的用法

时间:2012-12-17 21:17:09

标签: codeigniter variables codeigniter-2

我正在使用CodeIgniter 2并安装了Ion Auth以及CodeIgniter附带的新闻教程。

在新闻控制器中,页面标题的元素是这样写的......

$data['title'] = 'Page Title';

然而,在Ion Auth Controller中,页面标题的元素是这样写的......

$this->data['title'] = 'Page Title';

他们似乎都工作得很好,所以任何人都可以解释这些差异吗?也许Ion Auth是为旧版CodeIgniter编写的?我有什么理由想要使用其中一个吗?请根据需要链接到源。

3 个答案:

答案 0 :(得分:1)

我想这是作者的偏好。他喜欢使用类属性来存储视图的数据。它允许他跨方法分享它。如果您查看作者的其他项目(来源123),您可以看到两个示例(来源1和2合在一起)。

另外,对于您的项目,这可以允许您使用更多视图数据扩展Auth控制器。

class MY_Auth extends Auth {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->data['foo'] = 'bar';
        parent::index();
    }
}

这将允许您将$foo变量用于您的身份验证视图。 (在这种情况下/auth/index。)

在我自己的项目中,我喜欢使用受保护的属性来查看我的视图数据。它确实比局部变量给你更多的自由。您无需始终将视图的数据作为参数传递,您可以在以后轻松扩展控制器。

希望这有帮助!

答案 1 :(得分:1)

如果您打算使用此$ this->数据,则表示您可以通过类方法访问$ this->数据。另一方面,如果您使用$ data,它只适用于当前范围或方法,如果您需要其他地方的数据,那么您必须将其作为参数传递给其他方法。

答案 2 :(得分:0)

在数据变量上添加$ this,使其可以通过类访问。

我认为$ data或$ this->数据用于“查看”。它将从“Controller”传递到“View”,因此我们可以通过“View”访问该变量。

因此,“视图”方面没有差异。