首页 > 后端开发 > php教程 > 关于thinkphp中controller类中的构造函数的问题

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

WBOY
发布: 2016-06-20 12:41:36
原创
1216 人浏览过

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// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------// 应用入口文件// 检测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// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------// 应用入口文件// 检测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谢谢
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板