搜索
博主信息
博文 14
粉丝 0
评论 0
访问量 17707
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
tp5开发手册阅读笔记-架构总览和生命周期
krasenChen的博客
原创
1345人浏览过
1)MVC概述:模型与视图,用控制强制分离,数据请求与展示由控制器统一调配。
2)URL访问默认采用PATH_INFO方式:
http://域名/入口文件/模块/控制器/操作/参数名/参数值
解析链接:
入口文件(应用入口,如index.php)
模块(应用单元,如user)
控制器(控制单元,如Index)
操作(执行单元,如add())
例子:http://tp5.com/index.php/index/user/list/id/10/name/krasen
3)模块(module)
1,一个应用下有多个模块,对应着应用不同部分,如前台,后台
2,每个模块都可以有完整的MVC类库,创建和管理这些类库是我们最主要的工作
3,每个模块可以有独立的配置文件(config.php)和公共函数文件(common.php)
4,如果应用简单,可使用单模块模式:'app_multi_module'=>false

4)控制器(controller)
这里注意的是tp5的控制器不需要继承任何基类就可以工作,但是模板渲染所引用的方法,必须继承Controller类才能调用否则找不到方法报错。
eg:
<?php
namespace aap\index\controller;
use think\Controller;
class Index extends Controller {
    /**
     *  测试方法
     */
     public function index() {
         return $this->fetch();
     }
}
?>

5)TP5的生命周期:
入口文件 -> 引导文件 -> 注册自动加载 -> 注册错误和异常机制 -> 应用初始化
-> URL访问检测 -> 路由检测 -> 分发请求 -> 响应输出 -> 应用结束

1,入口文件:
文件名:index.php   位置:public/index.php  
用户通过入口文件,发起服务请求,是整个应用的入口与起点
原则任务:定义常量,加载引导文件,不要放任何业务处理代码

*代码:
<?php
/**
 * 应用入口文件
 */
 //定义项目路径
 define('APP_PATH', __DIR__ . '/../application/');
 //加载框架引导文件
 require __DIR__.'/../thinkphp/start.php';
?>

2.引导文件
文件名:start.php  位置:thinkphp/start.php
执行: 加载常量 -> 加载环境变量 -> 注册自动加载 -> 注册错误与异常 -> 加载惯例配置 -> 执行应用
*代码:
<?php
namespace think;
//ThinkPHP 引导文件
//加载基础文件
require __DIR__ . '/base.php';
//执行应用 App中的run()方法,该方法返回的是一个对象,然后执行该对象中的send()方法
App::run()->send();
?>

3.注册自动加载
类方法: Loader::register();
 作用:将所有符合规范的类库(包括Composer依赖加载的第三方类库)自动加载
 执行流程:
 注册自动加载方法: \think\Loader::autoload -> 注册系统命名空间 ->
 加载类库映射文件 -> 注册Composer自动加载 -> 注册extend扩展目录
 
4.注册错误和异常机制
执行Error::registert()注册错误和异常处理机制
三部分组成:
4_1,应用关闭方法: think\Error::appShutdown
4_2,错误处理方法: think\Error::appError
4_3,异常处理犯法: think\Error:::appException

5.应用初始化
加载公共配置 -> 加载公共扩展配置 -> 加载应用状态配置 ->加载别名定义 -> 
加载行为定义 ->加载公共函数文件 ->注册应用命名空间 -> 加载扩展函数文件 ->
设置默认时区 -> 加载系统语言包 

6.URL访问检测
URL必须是PATH_INFO格式才允许继续运行
标准格式:
http://域名/入口文件/模块名/控制器名/操作名/参数键值对
eg:http://tp5.com/index.php/index/user/add/id/10/namew/krasen
兼容格式:
http://域名/index.php?s=/模块名/控制器名/操作名&参数键值对
eg:http://tp5.com/index.php?s=index/user/add&id=10&name=krasen


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学