当前位置:Gxlcms > PHP教程 > 关于thinkphp中controller类中的构造函数的问题

关于thinkphp中controller类中的构造函数的问题

时间:2021-07-01 10:21:17 帮助过:6人阅读

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','<'))  die('require PHP > 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','<'))  die('require PHP > 5.3.0 !');// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine('APP_DEBUG',True);// 定义应用目录define('APP_PATH','./Application/');// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';// 亲^_^ 后面不需要任何代码了 就是如此简单

ThinkPHP.php 文件的最后一行是
Think\Think::start();

这样,整个系统就动起来了



O(∩_∩)O谢谢

人气教程排行