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

_Red_Code_ 2016-01-04 04:59:19

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类?
...全文
402 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
_Red_Code_ 2016-01-04
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
项目入口有
<?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 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);

// 定义应用目录
define('APP_PATH','./Application/');

// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单
ThinkPHP.php 文件的最后一行是
Think\Think::start();
这样,整个系统就动起来了
O(∩_∩)O谢谢
xuzuning 2016-01-04
  • 打赏
  • 举报
回复
项目入口有
<?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 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);

// 定义应用目录
define('APP_PATH','./Application/');

// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单
ThinkPHP.php 文件的最后一行是
Think\Think::start();
这样,整个系统就动起来了
_Red_Code_ 2016-01-04
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
ThinkPHP 最先执行的是 Think.class.php 中的 Think 类 其中有 spl_autoload_register('Think\Think::autoload'); 注册了自动加载类文件的方法 之后遇到不在内存中的类时,都会调用该方法进行加载,就无需劳烦尊驾了
找到了。。。感觉tp框架设计的好巧妙。。。。。 版主能否再解释下,thinkphp是如何使得第一个运行的为Think.class.php 中的 Think 类的呢?
xuzuning 2016-01-04
  • 打赏
  • 举报
回复
ThinkPHP 最先执行的是 Think.class.php 中的 Think 类 其中有 spl_autoload_register('Think\Think::autoload'); 注册了自动加载类文件的方法 之后遇到不在内存中的类时,都会调用该方法进行加载,就无需劳烦尊驾了

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧