关于thinkphp中controller类中的构造函数的问题
程序员文章站
2022-04-21 22:39:10
...
public function __construct() { Hook::listen('action_begin',$this->config); //实例化视图类 $this->view = Think::instance('Think\View'); //控制器初始化 if(method_exists($this,'_initialize')) $this->_initialize(); }
这是tp框架里controller类的构造函数代码
view应该是通过这个函数引入controller里面的吧,但其中的Hook类和Think类是如何被引入到controller类里面。
难道不进行任何use或require就能直接用Hook类或Think类?
回复讨论(解决方案)
ThinkPHP 最先执行的是 Think.class.php 中的 Think 类
其中有
spl_autoload_register('Think\Think::autoload');
注册了自动加载类文件的方法
之后遇到不在内存中的类时,都会调用该方法进行加载,就无需劳烦尊驾了
ThinkPHP 最先执行的是 Think.class.php 中的 Think 类
其中有
spl_autoload_register('Think\Think::autoload');
注册了自动加载类文件的方法
之后遇到不在内存中的类时,都会调用该方法进行加载,就无需劳烦尊驾了
找到了。。。感觉tp框架设计的好巧妙。。。。。
版主能否再解释下,thinkphp是如何使得第一个运行的为Think.class.php 中的 Think 类的呢?
项目入口有
// +----------------------------------------------------------------------// 应用入口文件// 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0',' 5.3.0 !');// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine('APP_DEBUG',True);// 定义应用目录define('APP_PATH','./Application/');// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';// 亲^_^ 后面不需要任何代码了 就是如此简单
ThinkPHP.php 文件的最后一行是
Think\Think::start();
这样,整个系统就动起来了
项目入口有
// +----------------------------------------------------------------------// 应用入口文件// 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0',' 5.3.0 !');// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine('APP_DEBUG',True);// 定义应用目录define('APP_PATH','./Application/');// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';// 亲^_^ 后面不需要任何代码了 就是如此简单
ThinkPHP.php 文件的最后一行是
Think\Think::start();
这样,整个系统就动起来了
O(∩_∩)O谢谢
上一篇: 幽默的毒舌辣语一小串