1

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

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

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

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

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

他们似乎都工作得一样好,所以任何人都可以解释其中的区别吗?也许 Ion Auth 是为旧版本的 CodeIgniter 编写的?有什么实际的理由让我想使用一个而不是另一个?请根据需要链接到来源。

4

3 回答 3

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在这种情况下。)

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

希望这可以帮助!

于 2012-12-18T01:32:52.840 回答
1

如果你打算使用这个 $this->data 这意味着你可以通过类方法访问 $this->data。另一方面,如果您使用 $data 它仅适用于当前范围或方法,并且如果您在其他地方需要数据,则必须将其作为参数传递给其他方法。

于 2012-12-18T05:04:46.960 回答
0

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

我相信 $data 或 $this->data用于“查看”。它将从“控制器”传递到“视图”,因此我们可以通过“视图”访问该变量。

因此,“视图”方面不会有任何差异。

于 2012-12-17T21:49:59.290 回答