• 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的响应流程 , 具体的每个部分的详细内容 , 后面会一 一介绍

  • 相关阅读:
    WPF基础篇之静态资源和动态资源
    15-Node-数据库
    15-Node
    12-Git
    总-S04-03 项目-大事件
    00-PHP难点
    08-PHP基础
    15-ES6
    16-Vue-webpack
    00-Web难点
  • 原文地址:https://www.cnblogs.com/xcymn/p/15712367.html
Copyright © 2020-2023  润新知