Home >Backend Development >PHP Tutorial >关于thinkphp中controller类中的构造函数的问题

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

WBOY
WBOYOriginal
2016-06-20 12:41:361229browse

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谢谢
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn