前言
ThinkPHP(简称TP)是国人开发的比较火的php
web框架,除了TP还有YII、Laravel等
ThinkPHP支持传统的MVC(Model-View-Controller)模式以及流行的MVVM(Model-View-ViewModel)模式的应用开发,但无论采用何种模式,URL的规范仍然是统一的。
ThinkPHP目前最新版本为5.1,最新代码都放在github中。
因为TP是国人开发的,所以官方教程是中文的,学起来也方便,本文档技术参照主要是官方教程的《ThinkPHP5.1完全开发手册》(写得不错,也适合初学者学习),链接地址:
https://www.kancloud.cn/special/thinkphp5_quickstart,点“ThinkPHP5.1完全开发手册”即可
一、安装环境
1.1 安装系统说明
操作系统:win7 64位旗舰版
所需要软件:
1.4 SQLyog安装
SQLyog 64位下载地址
https://www.cr173.com/soft/126913.html
如果怕自带的注册机有毒,可以删除,用下面的注册码(实验使用,建议购买正版)。
姓名(Name):cr173
序列号(Code):8d8120df-a5c3-4989-8f47-5afc79c56e7c
或者(OR)
姓名(Name):cr173
序列号(Code):59adfdfe-bcb0-4762-8267-d7fccf16beda
或者(OR)
姓名(Name):cr173
序列号(Code):ec38d297-0543-4679-b098-4baadf91f983
备 注:最好关闭软件的自动更新功能^_^
连接phpStudy的mysql
phpStudy说明中mysql连接默认的用词名和密码都是root
测试通过就可以连接上phpStudy的mysql了
1.5 PhpStorm
下载地址:https://www.jetbrains.com/phpstorm/,点“DOWNLOAD NOW”就行了
目前最新版本为2018.2.5
上面的图标是30天试用期,如果是实验可以用下面链接激活,建议购买正版。
http://idea.lanyus.com/
把上面复制的粘贴到激活主OK,安装好了的话,选择菜单
Help Register…选中“Activation code”,把上面代码粘贴进来
注意:使用前请将“0.0.0.0
account.jetbrains.com”添加到hosts文件中,否则有可能激活失败!!
1.6 ThinkPHP5安装(网站文件下载即用)
ThinkPHP5是一个网站文件,框架已经在里面,下载配置nginx/apache+php就可以使用。
TP5要求PHP版本为5.6或以上,建议用目前官网最新版本PHP7.2,性能上特性上都不错。
1.6.1 绑定host访问github
根据《ThinkPHP5.1完全开发手册》安装说明:
https://www.kancloud.cn/manual/thinkphp5_1/353948
推荐去github下载,版本会保持最新,因为国内的原因打很打开github,所以要做一下地址绑定,操作如下:
去“老D博客”中下载hosts替换或者添加本地的hosts就行了,下载地址
https://laod.cn/hosts/
如果你连怎么下载替换都不懂的话,我有点无语
ps:host文件路径为“C:\Windows\System32\drivers\etc\hosts”
绑定完后打开浏览器输入“https://github.com/”看是否能打开。
1.6.2 git clone下载TP5
电脑右下角找到phpStudy右击à“网站目录”
得知我网站目录为:G:\phpStudy2018\PHPTutorial\WWW
根据TP5安装文档 https://www.kancloud.cn/manual/thinkphp5_1/353948
得知会在网站根目录自动生成TP5目录
打开Git Bash进行如下操作:
cd g:
cd phpStudy2018/PHPTutorial/WWW/
git clonehttps://github.com/top-think/think tp5
cd tp5
git clone https://github.com/top-think/framework thinkphp
ps:因为是国外下载的,所以有些慢,看情况,需要耐心等待。
1.6.3 访问测试TP5
配置好上面的,保证phpStudy运行的情况下就可以访问试一下,根据安装文档说明
打开浏览器输入http://localhost/tp5/public/,结果如下:
为了方便,我“127.0.0.1”代替“localhost”结果是一样的。
PS:为什么是public目录呢?
从《ThinkPHP5.1完全开发手册》的目录结构或附录一中的“a1.1
TP5目录结构”得知TP5的WEB目录为public,为了安全其它不对外,所以访问public目录,为了方便访问也可以直接把网站指向public目录
1.7 修改nginx配置
根据《ThinkPHP5.1完全开发手册》看安全建议,链接地址为
https://www.kancloud.cn/manual/thinkphp5_1/354111
其中有一条
设置public目录为唯一对外访问目录,不要把资源文件放入应用目录;
所以修改一个phpStudy的配置把它指向根目录中的public目录中,操作如下:
二、ThinkPHP5 简单例子
编写TP5当然需要一些基础知识,官方教程的《ThinkPHP5.1完全开发手册》写得不错,也适合初学者学习,链接地址:
https://www.kancloud.cn/special/thinkphp5_quickstart,点“ThinkPHP5.1完全开发手册”即可
如果有新书或版本也会在ThinkPHP官方发布的,可以留言一下
2.1 编写一个简单的hello
要求:
建立一个测试文件里里面写一个hello访求输出“hello,”+“你的名字”
如“你好,hua”。
分析:
可以在index模块中建立一个名为“T1”的控制器,再在里写一个hello方法
名字有url传参过来。
打开PhpStorm,在界面中点“open”打开TP5所在目录,我这里是:
G:\phpStudy2018\PHPTutorial\WWW\tp5
找到applicationàindexàcontroller目录,右击建立一个名为Test的php Class文件
Test.php代码如下:
namespace app\index\controller;
// TP5中的控制器定义比较灵活,可以无需继承任何的基础类,也可以继承官方封装
//
的\think\Controller类或者其他的控制器类,或者根据业务需求封装自己的基础控制器类。class T1
{
public function hello($name){
// TP5中控制器一般用retrun返回不用echo输出
return "你好,".$name;
}
}
2.2 通过学号sid查询该生的信息
数据库的CURD操作,为了方便我只做查询操作,如果要知道更多方法请查看“数据库”和“模型”章节
https://www.kancloud.cn/manual/thinkphp5_1/353997
https://www.kancloud.cn/manual/thinkphp5_1/354040
2.2.1 需求及分析
需求:学生成绩表如下图所示:
其中id为主键,sid为学号,要求通过sid号,查看该生的学习成绩
只显示sid,name(名字)、yuWen(语文)、shuXue(数学)
分析:
通过sid学号查询信息,可以用get方法,为了方便我直接用url提交了。
可以用MVC模式,根据ThinkPHP工作原理图:(附录一中“a1.3 ThinkPHP工作原理图”)
可以做如下设计:
model(模型,即M):
可以建立一个名为Stu的类,CURD写在里面,一般不建议写在控制器不好分层
建立一个getBysid($sid)方法来传参查询,返回数据控制器。
Controller(控制器,即C):
可以建立一个名为“chengji”的控制器,写一个queryBySid($sid)方法,其中$sid为get传入的参数,再调用Stu模型类,把模块类返回的数据传给对应的视图展示就OK了。
控制器宣染视图可以用fetch() 或assign()方法
view(视图,即V):
主要就是找到控制器对应的视图,并填充模板数据,把最后结果展示给用户。
2.2.2 建立数据表
打开phpStudy用SQLyog连接数据库,下面是数据库创建SQL命令:
2.2.3 建立Stu模型
模型自动对应的数据表名称都是遵循小写+下划线规范,如果你的表名有大写的情况,必须通过设置模型的table属性。
1)配置数据库database.php
配置链接可以参看:https://www.kancloud.cn/manual/thinkphp5_1/353998
如果不配置数据库的话就使用的是tp5全局database.php,为了更针对模块,我在index模块下建立一个config目录,把全局config下的database.php复制到过来就行了,
并打开进行配置,我建立hua用户密码是hua123
2)配置phpStorm数据库(可选)
这个选项是可选的,因为我用的是phpStudy中的数据驱动,没有用它自身的,只不过让你们了解一下而已。完全可以不配置(∩_∩)
操作如下:
点phpStorm右侧边的Database,如果没有找到,可以点菜单栏中的
“View”-->“Tool Windws”-->“Database”
3)建立Stu模型
在index模块下建立一个model目录并在该目录下建立一个Stu的php类文件
Stu.php代码如下:
2.2.4 建立控制器
在index模块下建立一个名为“Chengji”的控制器,写一个queryBySid($sid)方法,其中$sid为get传入的参数
queryBySid($sid)方法代码如下:
2.2.5 建立视图
根据:https://www.kancloud.cn/manual/thinkphp5_1/354065
表示系统会按照默认规则自动定位模板文件,其规则是:
当前模块/view/当前控制器名(小写)/当前操作(小写).html
所以操作如下:
在index模块下建立view目录-->chengji目录--> query_by_sid.html文件
querybysid.html内容如下:
PS:
1. 我用了<ul><li></li></ul>方式去展示效果
2. {$stu}是控制器Stu中assign()定义的变量,把它转到模板上而已
2.3 测试效果
打开浏览器输入:http://127.0.0.1/index.php/index/chengji/querybysid/sid/2
其中2是是sid的值,可以是1-9都行,我懒写form表单提交了
效果如下:
附录一、文档涉及的ThinkPHP5知识点
a1.1 TP5目录结构
打开PhpStorm,在界面中点“open”打开TP5所在目录,我这里是:
G:\phpStudy2018\PHPTutorial\WWW\tp5
与《ThinkPHP5.1完全开发手册》的目录结构,链接地址为
https://www.kancloud.cn/manual/thinkphp5_1/353950
进行对比就知道各自的作用,我把关键的application目录进行截图解说,其它的
《ThinkPHP5.1完全开发手册》的目录结构都有说明
上面对目录结构的理解直接关系着URL访问,根据链接
https://www.kancloud.cn/manual/thinkphp5_1/353955
知道URL默认采用的是PATHINFO模式
http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...]
所以你要知道是什么是模块、控制器、操作吧,要不你连编写都不会
a1.2 什么是模块、控制器、操作
在“application应用目录”中:以TP5源目录为例子
模块:
二级目录,模块名就是就是目录的名字,如a1.1 TP5图中index目录就是模块
二级目录也可以有多个
控制器:
简单来说就是”application/模块目录/controller/x.php”的php类文件名,这里是“index/controller/Index.php”,其中Index.php中类名为Index,所以控制器为Index
当然controller目录下也可以有多个php类文档,那么就有不同的控制器咯
操作:
简单来说就是controller目录下php类文件中的方法。如Index.php类文件中有
index()和hello()两个方法,那么就有2个操作。
a1.3 ThinkPHP工作原理图
MVC把输入、处理和输出分开,在后期的维护过程中,很方便,比如,要更改页面,只需更改V的内容即可。
M模型(Model):处理数据和业务逻辑 (对应数据库和数据表的操作)
V视图(View):通过布局向用户展示数据
C控制器(Controller):接收用户请求,并调用相应的模型处理
第一步:浏览者 -> 调用控制器,对它发出指令
第二步:控制器 -> 按指令选取一个合适的模型
第三步:模型 -> 按控制器指令取相应数据
第四步:控制器 -> 按指令选取相应的视图
第五步:视图 -> 把第三步取到的数据按用户想要的样子显示出来