php有很多开源的框架。但是各个框架也有不同之处。本人认为:初学php框架,首先推荐thinkphp,网上搜搜的资料比较多、易学,简单
1. zendframework zend php语言公司发布的官方框架,重量级(功能多)
2. yii 美国华人开发的框架,xue qiang, qiang, 重量级框架,纯OOP框架
3. CI CodeIgniter 轻量级框架,开发速度快,部署灵活
4. cakephp 外国框架,重量级,速度慢
5. symfony 外国重量级框架
6. ThinkPHP 轻量级框架,国人框架,入门容易
总体来讲:thinkphp入口到执行完成需要涉及到的几个文件如下:
Index.php
ThinkPHP.php
Think.class.php
App.class.php
Dispatcher.class.php
ThinkPHP/Mode/common.php
ReadHtmlBehavior.class.php
Route.class.php
Hook.class.php
ContentReplaceBehavior.class.php
WriteHtmlCacheBehavior.class.php
ThinkPHP框架开发的应用的标准执行流程如下:用户URL请求调用应用入口文件public目录下(通常是网站的index.php)载入框架入口文件(ThinkPHP.php)在php5.3版本以后设置常量有两种方式:const name = value; 作用域根据当前命名空间决定define() 作用域全局① 定义了许多常量② 引入核心文件Think.class.phpThink::start();系统常量判断及定义(引用自ThinkPHP.php)// 系统常量定义
defined('THINK_PATH') or define('THINK_PATH', __DIR__.'/');
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/');
defined('APP_STATUS') or define('APP_STATUS', ''); // 应用状态 加载对应的配置文件defined('APP_DEBUG') or define('APP_DEBUG', false); // 是否调试模式
6 载入框架引导类(Think\Think)并执行Think::start方法进行应用初始化
Think\Think::start();
7 设置错误处理机制和自动加载机制
spl_autoload_register('Think\Think::autoload');
// 设定错误和异常处理
register_shutdown_function('Think\Think::fatalError');
set_error_handler('Think\Think::appError');
set_exception_handler('Think\Think::appException');
8 调用Think\Storage类进行存储初始化
(引用Think.class.php)
// 初始化文件存储方式
Storage::connect(STORAGE_TYPE);
9 部署模式下如果存在应用编译缓存文件则直接加载
if(!APP_DEBUG &&Storage::has($runtimefile)){
Storage::load($runtimefile);
}
10 读取应用模式(由APP_MODE常量定义)的定义文件
// 读取应用模式
$mode = include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php';
ThinkPHP/Library/Think/Think.class.php
static function start()
① 引入系统核心文件
② 引入配置文件
③ 如果是生成模式,还会生成common~runtime.php文件
④ 如果是第一次使用系统,还会自动创建对应的应用目录
App::run();
路由解析
//路由解析_把模块_控制器_方法赋予常量
//MODULE_NAME = 模块名称
//CONTROLLER_NAME 控制器
//ACTION_NAME 方法
App::exec()
实例化控制器对象
利用“反射”实现对象调用方法
11 加载应用配置文件(普通模式是 Application/Common/Conf/config.php)
12. 加载框架底层语言包(普通模式是 ThinkPHP/Lang/zh-cn.php)13. 如果是部署模式则生成应用编译缓存文件14. 加载调试模式系统配置文件(ThinkPHP/Conf/debug.php)15. 判断并读取应用的调试配置文件(默认是 Application/Common/Conf/debug.php)16 检测应用目录结构并自动生成(如果CHECK_APP_DIR配置开启并且RUNTIME_PATH目录不存在的情况下)
17 应用初始化(app_init)标签位侦听并执行绑定行为18. 判断并加载动态配置和函数文件19. 调用Think\Dispatcher::dispatch方法进行URL请求调度
20 获取请求的模块信息21. 检测模块是否存在和允许访问22. 判断并加载模块配置文件、别名定义、行为定义及函数文件23. 判断并加载模块的动态配置和函数文件24. 模块的URL模式判断25. 模块的路由检测(URL_ROUTER_ON开启)
26 根据请求执行控制器方法27. 如果控制器不存在则检测空控制器是否存在28. 控制器开始(action_begin)标签位侦听并执行绑定行为
29 判断并调用控制器的_initialize初始化方法
30 视图开始(view_begin)标签位侦听并执行绑定行为31. 调用Think\View的fetch方法解析并获取模版内容
举报/反馈

牛城的阿雷

427获赞 35粉丝
推荐不同地点的美景,旅游打卡地
关注
0
0
收藏
分享