我试图理解如何$this->load->view()
works insideCodeIgniter 中的视图文件的一部分。
core/Controller.php 正在调用 core/Loader.php,然后调用 _ci_load() ,后者又执行include('/path/to/view');
不应该$this
此时引用 Loader 类?怎么$this
指的是控制器?
根据我的理解,您应该必须在视图文件内调用 $this->view() 。不是 $this->load->view() 因为 load() 函数在加载器内部不可访问。它是 Controller 基类的类变量。 IE,$this->load =& load_class('Loader');
请注意:我正在尝试了解 CodeIgniter 的内部结构。我非常清楚如何将视图文件作为 CodeIgniter 嵌入到其他视图文件中user。请不要留下解释如何做的答案use$this->load().
为了简化对什么的理解$this
指在视图中,由于视图是由控制器方法“加载”的,因此视图仍然在与该方法相同的范围内运行,这意味着$this
可以有不同的上下文,具体取决于加载它的类。
例如:
class Controller1 extends CI_Controller {}
在此示例控制器中加载的任何视图文件中,$this
特指Controller1
类,可以访问CI_Controller
公共和受保护的属性/方法(如 Loader 或 Input 类,它们被分配给load
and input
CI_Controller 的属性),因为它extends那个班。
控制器仍然只是普通的旧 PHP 类。如果我这样做:
class Controller1 extends CI_Controller {
$this->foobar = 'Hello';
}
class Controller2 extends CI_Controller {
$this->foobar = 'World';
}
...如果我们加载相同的视图文件在这些控制器的任何方法中,使用$this->foobar
在该视图文件中将返回不同的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)