2.thinkphpk框架基础

1.命名规范

1.匈牙利命名法

标识符中的每个单词之间用下划线分隔: `user_name`;

2.驼峰命名法

标识符中的每个单词的首字母大写,用大写字母来分隔,
根据首字母是否大写又分为:
1.大驼峰: 首字母大写,常用作类名: `ClassName`, 又称`帕斯卡命名法`
2小驼峰除第一个单词外,每个单词首字母大写,常用作类属性和方法: $userName

1.1目录和文件

类型				  命名规范			                    实例
目录                      小写字母/小写字母+下划线                    user/user_type

类文件			命名空间(作用域)与文件真实路径完全一致      app\index\controller
(驼峰法)		  类名与文件名保持一致(首字母大写)	             User.php中只有User类

其它文件		小写字母/小写字母+下划线               list.php/ list_user.php

1.2函数与类属性与方法

类型					命名规范				实例
函数                 匈牙利命名法(小写字母+下划线)             get_user_type()
类的方法                    驼峰法(首字母小写)                        getName()
类的属性                    驼峰法(首字母小写)                          userType
魔术方法                双下划线开头+驼峰命名法                 __set(),__callStatic()

1.3常量与配置参数

类型					命名规						实例
常量			(匈牙利命名法)大写字母+下划线                 APP_PATH
配置参数              (匈牙利命名法)小写字母+下划线                 url_route_on

1.4数据库与字段

类型				   命名规范						实例
数据表             小写字母+下划线前缀用数据库名                    p5_ staff(库名_表名)
字段表             小写字母+下划线前缀用表名                         staff_name(表名_字段)

补充:

不要使用PHP保留关键字用作:常量名、类名 , 方法名、命名空间等,否则会引起系统错误

2.目录结构

目录结构

www  WEB部署目录(或者子目录)
├─application          ` 默认的应用目录(可以自定义)`
│  ├─common             公共模块目录(可以更改)
│  ├─module_name        模块目录
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  │
│  ├─command.php        命令行工具配置文件
│  ├─common.php         公共函数文件
│  ├─config.php         公共配置文件
│  ├─route.php          路由配置文件
│  ├─tags.php           应用行为扩展定义文件
│  └─database.php       数据库配置文件
│
├─public                `WEB目录(对外访问目录,必须是可以写的)`
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─thinkphp              `框架系统(核心)目录`
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─console.php        控制台入口文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  ├─phpunit.xml        phpunit配置文件
│  └─start.php          框架入口文件
│
├─extend               ` 扩展类库目录(自定义目录)`
├─runtime              ` 应用的运行时目录(可写,可定制,一般存放日志文件)`
├─vendor                `第三方类库目录(Composer依赖库)`
├─build.php            ` 自动生成定义文件(参考)`
├─composer.json        ` composer 定义文件`
├─LICENSE.txt           `授权说明文件`
├─README.md           `  README 文件 , 框架的说明文件`
├─think                 `命令行入口文件`

3.架构总览

3.1MVC模型

ThinkPHe5.0基于MVC(模型-视图-控制器)方式来组织的

M model(模型) C control(控制器) V view(视图)

模型是请求中需要用到的数据 , 视图就是负责将数据展示给用户

如果不采用这种mvc模式开发的话 , 模型和视图是写在一起的 , 也就是说我们的数据是嵌入到模型中的

控制器先从模型中获取数据 , 然后再选择合适的视图进行输出 , 又是中间加一层解决问题的套路

模型与视图,用控制器强制分离,数据请求与展示由控制器统一调配!

3.2URL访问模式

在tp5中URL访问默认采用 PATH_INFO方式访问http://域名 / 入口文件 / 模块 / 控制器 / 操作

image-20211102143022962

举例 : (index目录是application下的index目录)

http://tp5.com/index.php/index/index/index

image-20211102143311527

4.常用术语

4.1入口文件(index.php)

1.入口文件是整个Web应用的起点;2.入口文件最常用的是 index.php;3.入口文件并不唯一, 例如可为后台单独设置入口 admin.php4.入口文件可以通过URL重写功能将其隐藏。      需要在public目录下的.htaccess中配置
<IfModule mod_rewrite.c>  Options +FollowSymlinks -Multiviews  RewriteEngine On  RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_FILENAME} !-f   RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]     // 重写规则</IfModule>

4.2应用(application)

应用是URL请求到完成的(生命周期)处理对象,由 \think\App类处理 , 目录 :

1.应用是URL请求到完成的(生命周期)处理对象 , 由 \think\App类处理;2.应用必须在入口文件(如index.php)中调用并执行;3.可为不同的应用创建多个入口文件, 如后台入口: admin.php;4.应用有自己独立的配置文件( config.php )和公共函数文件( common.php );

image-20211102144245343

4.3模块(module)

1.一个应用下有多个模块,对应着应用的不同部分,如前台,后台2.每个模块都可以有完整的MVC类库,创建和管理这些类库是我们最主要的工作3.每个模块可以有独立的配置文件( contig.php)和公共函数文件( common.php)4.如果应用简单,可使用单模块模式:app_ multi module"=> false,此时应用

4.4控制器(controller)

1.每个模块下可以有多个控制器负责响应∪RL请求2.每个控制器对应一个控制器类( class),如User.php;3.控制器管理着模型与视图,是系统资源的调度与分配中心4.ThinkPHP5的控制器不需要继承任何基类就可以工作。

如果要使用controller类的方法 , 需要继承

image-20211102145257132

4.5操作(action)

1.操作对应着控制器类中的方法, 最URL请求的最小单元;2.任何URL请求 , 最终都是由控制器中的操作方法来完成3.操作是整个应用的最执行单元 , 是URL路由的核心与目标

4.6模型(model)

1.模型通常对应整个应用,因此模型通常在应用 application)目录下创建;2.尽管模型主要是针对数据库进行CURD操作,但也可以不操作数据库3.模型通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据4.模型返回的数据,通常是数组(aray)或字符串(stng);5.模型支持分层操作,例如将模型层分为逻辑层/服务层/事件层。

4.7视图(view)

1.控制器调用模型返回的数据, 是通过视图转换成不同格式(json,xml,html)输出的;2.视图根据请求,调用模板引擎确定是直接输岀还是模板解析后再输岀;3.视图由大量模板文件组成,这些文件对应着不同控制器中的操作方法;4.模板目录是可以动态设置的5.视图最直观的理解就是由一堆html文件组成的

举例 : 在index模块下的类文件(Index.php)中的Index类中新增一个操作(hello方法) , 返回视图下的一个hello.html , 需要在控制器同级目录新建一个view文件夹 , 然后新建一个index(和当前模块名一样的文件夹), 然后新建一个和方法名一样的html页面

需要继承控制器类

Index.php

<?phpnamespace app\index\controller;use think\Controller;class Index extends Controller{    public function index()    {        return 'php中文网(nb)';    }    public function hello()    {       // return 'hello php.cn';       return $this->fetch();    }}

hello.html

<h2>我是index模块中的index控制器中的hello方法对应的模板文件</h2>

image-20211102164214227

5.TP5的生命周期

image-20211102162928598

5.1入口文件

一步一步分析 , 首先是入口文件

image-20211102163038344

定义常量 , 加载引导文件 , 引导文件的位置 : /thinkphp/start.php

5.2引导文件

接着是引导文件

image-20211102163213338

引导文件start.php

<?phpnamespace think;// ThinkPHP 引导文件// 加载基础文件require __DIR__ . '/base.php';   // 这个文件 ,  定义了大量的常量// 执行应用App::run()->send();    // 执行App下的run()方法 , 然后返回一个对象 , 再执行这个对象的send()方法

5.3注册自动加载

image-20211102164612703

5.4注册错误和异常机制

执行Error::register注册错误和异常处理机制。执行Error类下的register方法

image-20211102164832333

5.5应用初始化

image-20211102164904919

5.6URL访问检测

image-20211102165040018

入口文件是index.php , 然后访问index模块下的user控制器的add方法 , 参数是id=10,name=peter

如果你的操作系统不支持上面的标准格式 , 还可以使用下面

image-20211102165236580

5.7路由检测

image-20211102165342397

5.8分发请求

image-20211102165433183

5.9响应输出

image-20211102165524021

5.10应用结束

image-20211102165620645

上面只是大致介绍了一下thinkphp的响应流程 , 具体的每个部分的详细内容 , 后面会一 一介绍

posted @ 2021-12-20 18:34  Mn猿  阅读(73)  评论(0编辑  收藏  举报