ThinkPHP3.1.3源码分析(四) Think.class.php
2014-12-21 15:45
537 查看
一开始的ThinkPHP.php 最后一行代码 就是 Think::start();
调用了 Think.class.php 的 start()方法
1、注册错误、异常的处理方法
register_shutdown_function、set_error_handler、set_exception_handler
2、自动加载
找到了 就return
没有找到,则
3、编译项目
其实即使将 runtime.php 流程中定义的常量和应用的文件 都包含在了一个文件中 ~runtime.php
这样可以加快运行速度,减少io开销
调用了 Think.class.php 的 start()方法
static public function start() { // 设定错误和异常处理 register_shutdown_function(array('Think','fatalError')); set_error_handler(array('Think','appError')); set_exception_handler(array('Think','appException')); // 注册AUTOLOAD方法 spl_autoload_register(array('Think', 'autoload')); //[RUNTIME] Think::buildApp(); // 预编译项目 //[/RUNTIME] // 运行应用 App::run(); return ; }这个类最重要的是三部分
1、注册错误、异常的处理方法
register_shutdown_function、set_error_handler、set_exception_handler
2、自动加载
if(substr($class,-8)=='Behavior') { // 加载行为 if(require_array(array( CORE_PATH.'Behavior/'.$file, EXTEND_PATH.'Behavior/'.$file, LIB_PATH.'Behavior/'.$file, $libPath.'Behavior/'.$file),true) || (defined('MODE_NAME') && require_cache(MODE_PATH.ucwords(MODE_NAME).'/Behavior/'.$file))) { return ; } }节选代码,主要的写法 就是 根据类名的后缀 如 abcBehavior 这搜索默认Behavior的文件夹里 有没有对应的类文件
找到了 就return
没有找到,则
// 根据自动加载路径设置进行尝试搜索 $paths = explode(',',C('APP_AUTOLOAD_PATH')); foreach ($paths as $path){ if(import($path.'.'.$class)) // 如果加载类成功则返回 return ; }
3、编译项目
其实即使将 runtime.php 流程中定义的常量和应用的文件 都包含在了一个文件中 ~runtime.php
这样可以加快运行速度,减少io开销
相关文章推荐
- thinkPHP 框架 引导类Think.class.php 分析(一)
- 【thinkphp3.x】ThinkPHP/Lib/Core/Think.class.php文件分析
- thinkphp文件处理类Dir.class.php的用法分析
- thinkphp核心源码注释|Think.class.php
- ThinkPHP3.1.3源码分析(三) common.php
- ThinkPHP报错:Call to undefined function Think\C() in ThinkPHP/Library/Think/Think.class.php
- 【thinkphp3.x】Model.class.php文件分析
- [李景山php]thinkphp核心源码注释|Think.class.php
- Warning: require(/www/101/eduask_net/ThinkPHP/Library/Think/Think.class.php): failed to open stream:
- 【thinkphp3.x】ThinkPHP/Lib/Core/App.class.php文件分析
- 【thinkphp3.x】ThinkPHP/Lib/Behavior/ParseTemplateBehavior.class.php文件分析
- TP框架中/ThinkPHP/Library/Think/Storage/Driver/File.class.php 错误
- 【thinkphp3.x】ThinkPHP/Lib/Core/Model.class.php文件分析
- Fatal error: Call to undefined function Think\C() in /var/www/html/ceshi.hzheee.com/think/ThinkPHP/Library/Think/Think.class.php on line 334 这个问题解决
- 【thinkphp3.x】ThinkPHP/Lib/Core/View.class.php文件分析
- ThinkPHP3.1.3源码分析(五) App.class.php
- thinkphp文件处理类Dir.class.php的用法分析
- 【thinkphp3.x】ThinkPHP/Lib/Behavior/ContentReplaceBehavior.class.php文件分析
- ThinkPHP3.1.3源码分析---php文件压缩zlib.output_compression 和 ob_gzhandler
- 【thinkphp3.x】ThinkPHP/Lib/Core/Dispatcher.class.php文件分析