Thinkphp框架初始及安装部署

article/2025/9/27 23:11:42

一、框架概述

1、什么是框架

框架就是一些代码类、方法(函数)、变量、常量的集合,这些代码是功能结构性的代码(并非业务代码)。业务代码其实就是具体的一些模块的增删改查逻辑代码。

使用框架开发项目,有便于代码重用、开发效率高、代码规范好、便于功能扩展等优点。

2、php中的主流框架

① Zend Framework 框架,PHP官方框架。

② YII框架,又叫易框架。

③ Symfony 框架。

④ Laravel框架,市场使用较多。

⑤ Codelgniter框架,简称CI框架。

⑥ ThinkPHP框架,简称TP框架,常用版本:3.2.3和 5.0.*版本。

ThinkPHP是国人自己开发的框架。有中文官网、中文帮助文档、中文社区,以及丰富的百度搜索资源。所以ThinkPHP很适合作为入门级的开发框架。

这些框架大多都基于MVC设计思想和面向对象的。

mvc:

M:模型model,处理业务数据,与数据库做交互。

V:视图view,显示html页面,用户能够看到并与之交互的页面。

C:控制器controller,接收请求,调用模型处理数据,调用视图显示页面。

整个网站应用,分为模型、视图、控制器三大部分组成。

二、ThinkPHP框架安装

1、下载并解压框架

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。

下载地址:http://www.thinkphp.cn

wps62F7.tmp

 下载后解压到工作目录

wps6327.tmp

2、配置虚拟主机

 ① 通过phpStudy的“站点域名管理”进行配置或者直接修改apache的虚拟主机配置文件,

image

image

 ② 域名解析,修改hosts文件

image

 增加域名如下: 多个域名可以写在同一行,以空格隔开

127.0.0.1 tpshop.com www.tpshop.com

 ③ 重启apache,在浏览器访问配置的虚拟站点http://www.tpshop.com

wps633B.tmp

看到以上界面,说明框架安装成功。

apache配置参考(不要照搬):

<VirtualHost *:80>DocumentRoot "E:\phpStudy\WWW\tpshop\public"ServerName www.tpshop.comServerAlias tpshop.com<Directory "E:\phpStudy\WWW\tpshop\public">Options FollowSymLinks ExecCGIAllowOverride AllOrder allow,denyAllow from allRequire all granted</Directory>
</VirtualHost>

 三、TP框架基础

1、目录结构(重点)

(见手册--基础--目录结构)

序言 · ThinkPHP5.0完全开发手册 · 看云,(TP5.0版本)

 1.project  应用部署目录2.├─application           应用目录(可设置)3.│  ├─common             公共模块目录(可更改)4.│  ├─index              模块目录(可更改)5.│  │  ├─config.php      模块配置文件6.│  │  ├─common.php      模块函数文件7.│  │  ├─controller      控制器目录8.│  │  ├─model           模型目录9.│  │  ├─view            视图目录
10.│  │  └─ ...            更多类库目录
11.│  ├─command.php        命令行工具配置文件
12.│  ├─common.php         应用公共(函数)文件
13.│  ├─config.php         应用(公共)配置文件
14.│  ├─database.php       数据库配置文件
15.│  ├─tags.php           应用行为扩展定义文件
16.│  └─route.php          路由配置文件
17.├─extend                扩展类库目录(可定义)
18.├─public                WEB 部署目录(对外访问目录)
19.│  ├─static             静态资源存放目录(css,js,image)
20.│  ├─index.php          应用入口文件
21.│  ├─router.php         快速测试文件
22.│  └─.htaccess          用于 apache 的重写
23.├─runtime               应用的运行时目录(可写,可设置)
24.├─vendor                第三方类库目录(Composer)
25.├─thinkphp              框架系统目录
26.│  ├─lang               语言包目录
27.│  ├─library            框架核心类库目录
28.│  │  ├─think           Think 类库包目录
29.│  │  └─traits          系统 Traits 目录
30.│  ├─tpl                系统模板目录
31.│  ├─.htaccess          用于 apache 的重写
32.│  ├─.travis.yml        CI 定义文件
33.│  ├─base.php           基础定义文件
34.│  ├─composer.json      composer 定义文件
35.│  ├─console.php        控制台入口文件
36.│  ├─convention.php     惯例配置文件
37.│  ├─helper.php         助手函数文件(可选)
38.│  ├─LICENSE.txt        授权说明文件
39.│  ├─phpunit.xml        单元测试配置文件
40.│  ├─README.md          README 文件
41.│  └─start.php          框架引导文件
42.├─build.php             自动生成定义文件(参考)
43.├─composer.json         composer 定义文件
44.├─LICENSE.txt           授权说明文件
45.├─README.md             README 文件
46.├─think                 命令行入口文件

 2、配置文件(重点)

(见手册--配置)

① 三个层级的配置文件:

框架主配置文件(惯例配置文件) thinkphp/convention.php

应用公共配置文件 application/config.php, application/database.php 对整个应用生效

模块配置文件 application/模块目录/config.php 对当前模块生效

② 其他说明:

配置文件格式 return array( 键值对 );

加载顺序: 框架主配置文件 》 应用公共配置文件 》 模块配置文件

配置文件生效顺序: 后加载的生效(后加载的配置项会覆盖之前配置项)

如果要手动进行配置,一般不要修改框架本身的主配置文件,

而是在应用或者模块配置文件中进行配置。

3、函数文件

框架助手函数文件 thinkphp/helper.php

应用公共函数文件 application/common.php

模块函数文件 application/模块目录/common.php

一般不建议直接修改thinkphp/helper.php

4、开发规范(了解)

TP框架编码规范:见手册--基础--开发规范

wps634B.tmp

 扩展:PSR代码规范:Introduction · PHP编码规范(中文版) · 看云

wps635C.tmp

5、请求的生命周期

框架的生命周期,也就是请求的执行流程:

wps635D.tmp

 四、TP框架中的控制器

1、控制器的后缀

打开配置文件application/config.php,有如下配置

'controller_suffix' => false,

表示默认情况下,控制器无特殊后缀。例如 Index控制器,文件名为Index.php

如果需要进行设置,可以设置为(我们不需要这么设置)

'controller_suffix' => 'Controller',

表示控制器以Controller为后缀。例如Index控制器,文件名为IndexController.php

2、控制器的定义

(见手册--控制器--控制器定义)

1)定义位置及命名规则

定义位置:application/模块目录/controller/目录下

命名规则:控制器名称(首字母大写) + (控制器后缀,默认没有) + .php

默认:Index控制器 Index.php

User控制器 User.php

Test控制器 Test.php

示例:

wps635E.tmp

2)编写控制器

① 声明命名空间 namespace app\模块目录名\controller

② 引入控制器基类(可选) use think\Controller; think是命名空间 Controller是基类控制器

③ 定义当前控制器类,继承控制器基类(可选)

示例:定义测试控制器Test.php

wps636E.tmp

3、框架中的命名空间

命名空间本身是PHP就有的,用来防止命名冲突问题的。

TP框架中的命名空间,通常和目录挂钩。

原因:TP中的自动加载机制,会将类的命名空间作为加载路径的一部分。

wps636F.tmp

TP中命名空间使用:

①声明命名空间 使用namespace关键字

②引入指定的类 使用use关键字 命名空间\类名称

③完全限定式访问 在使用类时,\完整命名空间\类名称(继承和实例化)

如果一个类没有命名空间,使用 \类名

4、url访问

(见手册--架构--URL访问)

ThinkPHP5.0框架中,默认使用PATH_INFO方式的url进行访问。

示例:http://www.tpshop.com/index.php/Index/Test/index/page/10

格式:http://域名/入口文件/模块名/控制器名称/操作方法名称/参数名/参数值

隐藏入口文件写法:http://域名/模块名/控制器名称/操作方法名称/参数名/参数值

需要对apache进行设置(手册--架构--URL访问、手册--部署--URL重写)

wps6370.tmp

 使用PHPStudy需要将 public目录的.htaccess文件中,index.php后面加上?

1562229371393

使用Apapche的重写机制隐藏入口文件后,如果在整个url后面加上.html后缀, 让整个url看起来像是访问的静态页面。这叫做“伪静态”。

5、调试模式

(见手册--错误与调试--调试模式)

默认情况下,如果代码有误(比如控制器名拼写有误),会出现以下错误:

wps6382.tmp

错误描述比较模糊,不方便进行错误调试。这种模式通常叫做“部署模式”(生产模式)。

开发阶段可以将框架设置为调试模式,便于进行错误调试:

修改 项目目录\application目录\config.php

wps6383.tmp

 开启调试模式后,报错信息格式如下

wps6384.tmp

会提示详细错误信息 和 错误位置(参考位置)。

相对于 线上环境(开发完成后的阶段),叫做 部署模式或者生产模式。

五、创建模块

1、创建前台和后台模块

一个典型的应用是由多个模块组成的(通常有前台网站模块和后台管理系统模块),这些模块通常都是应用目录下面的一个子目录,每个模块都有自己独立的配置文件、公共文件和类库文件。

我们给项目创建home(前台)和admin(后台)两个模块:

image

2、设置默认访问模块

打开配置文件application/config.php,有如下配置

'default_module' => 'index',

表示默认访问模块为index模块

可以更改默认模块为home模块

'default_module' => 'home',

六、命令行创建模块目录及文件

在 项目根目录 执行命令(think文件所在的目录)

1、命令行创建模块目录

(见手册 -- 命令行 -- 自动生成目录结构)

通常可以通过以下命令,自动生成模块目录

php think build --module 模块名

比如:创建test模块目录,执行命令 php think build --module test即可。(模块名小写)

wpsAFC3.tmp

2、命令行创建控制器

(见手册 -- 命令行 -- 创建类库文件)

通常可以通过以下命令,自动创建控制器

php think make:controller 模块名/控制器名 
php think make:controller 模块名/控制器名 --plain

加上 --plain 参数 表示创建没有方法的空控制器类。否则控制器类中会自带一些方法。

比如:创建home模块Index控制器,执行命令 php think make:controller home/Index即可。

注意:控制器名首字母大写。

wpsB002.tmp

3、命令行创建模型

(见手册 -- 命令行 -- 创建类库文件)

通常可以通过以下命令,自动创建模型

php think make:model 模块名/模型名

比如:创建home模块User模型,执行命令 php think make:model home/User即可。

注意:模型名首字母大写。

wpsB003.tmp

七、Request请求类

1、获取输入变量

(见手册--请求--输入变量)

要获取当前的请求信息,可以使用\think\Request类

$request = \think\Request::instance();

或者使用助手函数

$request = request();

wpsB004.tmp

也可以单独获取get变量或者post变量

Request::instance()->get();
Request::instance()->post();
input('get.');
input('post.');

wpsB005.tmp

代码示例:

wpsB016.tmp

浏览器访问效果:

wpsB017.tmp

特殊说明:路由变量与get变量

People.com | Celebrity News, Exclusives, Photos and Videos

param方法 能够获取所有参数(id, page)

get方法 只能获取?后面的请求字符串的参数(page)

route方法 只能获取到?前面的路由中的参数(id)

2、参数绑定

(见手册--请求--参数绑定)

方法参数绑定是把URL地址(或者路由地址)中的变量作为操作方法的参数直接传入。

wpsB018.tmp

wpsB019.tmp

使用示例:home模块Test控制器read方法中,声明$id参数

wpsB029.tmp

访问url中,传递id参数 People.com | Celebrity News, Exclusives, Photos and Videos

效果:

wpsB02A.tmp

3、依赖注入

(见手册--请求--依赖注入)

依赖注入:简单的说,要在一个类A中使用另一个依赖类B时,不直接在类A中实例化类B,而是先实例化类B后再以参数的形式传入类A.

wpsB02B.tmp

wpsB03C.tmp

框架中的使用:

1562229297100

1562229323006

原理分析:

1562229272862

补充说明:Request请求类中,封装了很多和请求相关的方法,详情见手册--请求(多看)

小结:

可以找到任何一种方法 接收请求参数

//1.获取请求对象  
$request = request();
$request = \think\Request::instance();
$request = $this->request; //仅限于继承了底层控制器的情况下
public function save(Request $request)  //依赖注入//2. 接收请求参数 param方法$params = $request->param();$params = input();$params = request()->param();$id = $request->param('id');$id = input('id');public function edit($id)//参数绑定

八、ThinkPHP框架中的视图

1、视图的组成

View视图类(继承了自定义模板引擎,功能与Smarty类似)

HTML模板文件

2、模板的定义

(见手册--模板--模板定位)

为了对模板文件更加有效的管理,ThinkPHP对模板文件进行目录划分,默认的模板文件定义规则是:视图目录/控制器名(小写)/操作名(小写)+模板后缀

默认的视图目录是模块的view目录,框架的默认视图文件后缀是.html。

比如home模块 Index控制器index方法要调用的模板定义为view/index/index.html

1562229244022

3、模板渲染

(见手册--视图--模板渲染,手册--视图--模板赋值)

在控制器方法中,

第一种:使用assign方法进行模板赋值,使用fetch方法进行模板渲染。

第二种:使用助手函数view(), 进行模板渲染并赋值。

使用示例:

1562228904272

注:模板中输出变量值: {$模板变量名}

九、将后台模板与框架做结合

模板整合思路:

① 确定页面的访问路径(模块、控制器、方法)

② 新建对应的控制器方法,在方法中调用模板

③ 将模板页面移动到对应的视图目录下(创建子目录)

④ 将静态资源文件移动到public/static/admin目录下

⑤ 修改模板文件中静态资源路径

页面分布:

登录页 Login控制器login方法 login.html

首页 Index控制器index方法 index.html

商品列表 Goods控制器index方法 goods_list.html -> index.html

商品新增 Goods控制器create方法 goods_add.html -> create.html

商品修改 Goods控制器edit方法 goods_edit.html -> edit.html

管理员列表 Manager控制器index方法 manager_list.html -> index.html

管理员新增 Manager控制器create方法 manager_add.html -> create.html

管理员修改 Manager控制器edit方法 manager_edit.html ->edit.html

...

1、模板布局

(见手册--模板--模板布局)

使用模板布局,就是把多个模板页面都有的公共代码给抽取出来,放到一个公共位置开发维护

好处:相同的代码只维护一份,减少代码工作量

后台全局布局设置步骤:

① 修改配置文件application/admin/config.php,加入以下设置

'template'  =>  ['layout_on'     =>  true,//开启布局'layout_name'   =>  'layout',//布局文件名称
]

1562228971516

② 将静态资源文件移动到/public/static/admin目录下

1562229048578

③ 在application/admin/view目录下,新建layout.html

将后台页面公共的头部、底部代码提取到layout.html中,在中间位置放一个特殊字符串“{_CONTENT_}”,表示此位置,替换为原始要访问的页面内容。

layout.html文件中, 只保留所有页面公共 的css和js相关代码,修改静态资源路径

注: 一定不能 直接将所有css和js都放在layout.html中。

注:TP框架中,模板中的静态资源路径,不能使用相对路径./ ,必须使用以/开头的路径。

1562229014904

④ 临时关闭模板布局

全局布局设置,对所有页面全部生效。

特殊页面(不需要使用布局的页面),可以在控制器方法中,临时关闭模板布局。

$this->view->engine->layout(false);

比如登录页面,不需要使用布局,见 “3、后台登录页”

2、后台首页

① 确定页面的访问路径(模块、控制器、方法)

admin模块Index控制器index方法

② 新建对应的控制器方法,在方法中调用模板

<?php
namespace app\admin\controller;use think\Controller;class Index extends Controller
{public function index(){return view();}
}

③ 将模板页面移动到对应的视图目录下

index.html => application/admin/view/index/index.html

④ 修改模板文件

保留页面独有的静态资源文件,以及主体部分代码

修改模板文件中静态资源路径

1562229073574

注:如果页面显示效果不对,可以考虑先删除缓存 runtime目录

3、后台登录页

① 确定页面的访问路径(模块、控制器、方法)

admin模块 login控制器 login方法

② 新建对应的控制器方法,在方法中调用模板

注:后台的登录页面,不需要使用布局

1562229165085

③ 将模板页面移动到对应的视图目录下

将login.html 移动到 application/admin/view/login/目录下

1562229188964

⑤修改模板文件中静态资源路径

修改application/admin/view/login/login.html

注:也可以使用_STATIC_ 代替静态资源路径中的/static(手册--视图--输出替换)

1562229209387


http://chatgpt.dhexx.cn/article/BfOZAWcn.shtml

相关文章

认识thinkphp框架

https://www.thinkphp.cn/down.html 版本5.0.24 ThinkPHP是一个免费开源的&#xff0c;快速、简单的面向对象的轻量级PHP开发框架 tp5 WEB部署目录&#xff08;或者子目录&#xff09; ├─application 应用目录 │ ├─common 公共模块目录&#xff08;可以更改&#xff09; …

【Java教程系列】IDEA快捷键大全。

自动代码 常用的有fori/sout/psvmTab即可生成循环、System.out、main方法等boilerplate样板代码 。 例如要输入for(User user : users)只需输入user.forTab &#xff1b; 再比如&#xff0c;要输入Date birthday user.getBirthday()只需输入user.getBirthday().varTab即可。…

IDEA快捷键大全(超详细!)

4.1、字体设置 file --> settings --> 输入font --> 设置字体样式以及字号大小。 4.2、快速生成main方法 psvm、main 4.3、快速生成System.out.println() sout 4.4、注意&#xff1a;IDEA是自动保存&#xff0c;不需要ctrl s 4.5、删除一行 ctrl y 4.6、怎…

IDEA的实用快捷键大全

目录 1.常规快捷键 1.1通用类 1.2注释类 1.3操作类 1.4展开与关闭 2.智能补全类快捷键 3.程序结构类快捷键 4.统一操作快捷键 1.常规快捷键 1.1通用类 像 Ctrl C 复制&#xff0c; Ctrl V 粘贴&#xff0c; Ctrl S保存文件&#xff0c; Ctrl X剪切&#xff0c;这种…

IDEA快捷键大全 + 动图演示

目录 一、构建/编译二、文本编辑三、光标操作四、文本选择五、代码折叠六、多个插入符号和范围选择七、辅助编码八、上下文导航九、查找操作十、符号导航十一、代码分析十二、运行和调试十三、代码重构十四、全局 CVS 操作十五、差异查看器十六、工具窗口 一、构建/编译 Ctrl …

Idea快捷键大全(Windows)/Intellij IDEA常用快捷键介绍 Intellij IDEA快捷键大全汇总

Ctrl 快捷键 介绍 Ctrl F 在当前文件进行文本查找 &#xff08;必备&#xff09; Ctrl R 在当前文件进行文本替换 &#xff08;必备&#xff09; Ctrl Z 撤销 &#xff08;必备&#xff09; Ctrl Y 删除光标所在行 或 删除选中的行 &#xff08;必备&#x…

python 相关性检验怎么计算p值_挖掘数据内部联系:相关性分析

相关性表示的是两个观测的数据向量之间的变化关系。一般来讲研究对象(样品或处理组)之间使用距离分析,而元素(物种或环境因子)之间进行相关性分析。两个变量之间的相关性可以用简单相关系数(例如皮尔森相关系数等)进行表示,相关系数越接近1,两个元素相关性越大,相关系数越接…

python 相关性检验怎么计算p值_数据分析---用Python进行相关性分析(兼谈假设检验)...

一、相关关系和相关系数 世上除了因果关系,还有相关关系。 有一个叫“相关系数”的指标来量化两个事物之间的相关程度。 其中相关系数用“r”表示,取值范围介于-1和1之间。 当(X,Y)正相关的时候,r=1;当(X,Y)负相关的时候,r=-1;当(X,Y)不相关的时候,r=0。 当然一般的线性…

python 相关性检验怎么计算p值_机器学习:数据的准备和探索——数据假设检验...

图 | 源网络 文 | 5号程序员 数据假设检验是数理统计学中根据一定假设条件由样本推断总体的一种方法。 那我们啥时候会用到假设检验呢? 大多数情况下,我们无法分辨事物的真伪或者某种说法是否正确,这时就需要进行假设,然后对我们的假设进行检验。 比如,我们想知道被告人是…

R语言笔记十一:相关性分析函数及相关性检验函数

1.相关性分析 相关性分析是指对两个或多个具备相关性的变量元素进行分析&#xff0c;从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。简单来说就是变量之间是否有关系。 相关性可能是正相关&#xff0c;…

数据特征分析之 python相关性检验(转载学习)

数据特征分析技能—— 相关性检验 相关性分析是指对两个或多个具备相关性的变量元素进行分析&#xff0c;从而衡量两个变量因素的相关密切程度 一般常用四种方法&#xff1a; - 画图判断 - pearson&#xff08;皮尔逊&#xff09;相关系数 - sperman&#xff08;斯皮尔曼&a…

相关性检验(二维列联表相关 协方差 Pearson相关 Spearman相关 相关性检验 相关可视化)

文章目录 相关二维列联表相关协方差Pearson相关Spearman相关相关性检验相关可视化 相关 二维列联表相关 data <- xtabs(~TreatmentImproved, data Arthritis) ## 生成二维列联表assocstats(data)协方差 states <- state.x77[,1:6] cov(states)Pearson相关 cor(state…

python实现Kendall相关性检验

python实现Kendall相关性检验 肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。 分类变量可以理解成有类别的变量,可以分为 无序的,比如性别(男、女)、血型(A、B、O、AB); 有序的,比如肥胖等级(重度肥胖,中度肥…

R语言:相关性分析检验

相关性分析 相关性分析的检验衡量指标包括&#xff1a;Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格相关系数、多系列相关系数 默认使用Pearson相关系数 cor(data) #或者 cor(x,y,method c(“pearson”, “kendall”, “spearman”)) #x,y可以是…

python实现spearman相关性检验

python实现spearman相关性检验 Spearman秩相关系数 对原始变量的分布不做要求,适用范围较Pearson相关系数广,即使是等级资料,也可适用。但其属于非参数方法,检验效能较Pearson系数低。(适合含有等级变量或者全部是等级变量的相关性分析) 测试两个样本是否具有单调关系。…

多元数据的相关性检验——基于R

多元数据的相关性检验 检验方法&#xff1a;1.Pearson相关检验2.Spearman相关检验3.Kendall相关检验 cor.test函数案例分析&#xff1a; 对于多元数据&#xff0c;讨论变量间是否具有相关关系是很重要的&#xff0c;这里介绍三种相关检验—— Pearson相关检验&#xff0c;Spear…

时间序列之间的相关性检测

为了检测时间序列的相关性&#xff0c;我们经常使用自相关&#xff0c;互相关或归一化互相关。 互相关&#xff08;Cross-Correlation&#xff09; 互相关是两个不同时间序列的比较&#xff0c;以检测具有相同最大值和最小值的指标之间是否存在相关性。例如&#xff1a;“两个…

python实现pearson相关性检验

python实现pearson相关性检验 两个变量之间的相关性可以采用Pearson或Spearman相关分析方法进行分析。Pearson相关分析主要用来分析正态分布、非等间距测度的连续变量,而Spearman可用来分析不服从双变量正态分布或总体分布型未知以及原始数据是等级资料的数据。 测试两个样本是…

数据特征分析技能—— 相关性检验

数据特征分析技能—— 相关性检验 相关性分析是指对两个或多个具备相关性的变量元素进行分析&#xff0c;从而衡量两个变量因素的相关密切程度 一般常用四种方法&#xff1a; - 画图判断 - pearson&#xff08;皮尔逊&#xff09;相关系数 - sperman&#xff08;斯皮尔曼&a…

【相关性检验】

两个变量之间的相关性检验 1、皮尔森相关系数&#xff1a;它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。 要判断两个变量之间是否存在相关性&#xff1a;可以采用画散点图的方式&#xff0c;进行直观性的分析。使用python进行person检验 import pandas as p…