我正在使用CodeIgniter 2并安装了Ion Auth以及CodeIgniter附带的新闻教程。
在新闻控制器中,页面标题的元素是这样写的......
$data['title'] = 'Page Title';
然而,在Ion Auth Controller中,页面标题的元素是这样写的......
$this->data['title'] = 'Page Title';
他们似乎都工作得很好,所以任何人都可以解释这些差异吗?也许Ion Auth是为旧版CodeIgniter编写的?我有什么理由想要使用其中一个吗?请根据需要链接到源。
答案 0 :(得分:1)
我想这是作者的偏好。他喜欢使用类属性来存储视图的数据。它允许他跨方法分享它。如果您查看作者的其他项目(来源1,2,3),您可以看到两个示例(来源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”访问该变量。
因此,“视图”方面没有差异。