THINKPHP5(TP5)新手入门必看教程

1,162次阅读
没有评论

共计 4793 个字符,预计需要花费 12 分钟才能阅读完成。

THINKPHP 5 是一个很好的 PHP 框架,简称 TP5,如果你会 PHP,可以很容易的掌握这个框架,针对于想要学习 tp5 的同学,我们简单对 TP5 的安装和配置,及文件结构做一下介绍。

安装配置

官网下载 TP5 完整版(初学者学习用的)
解压到本地的开发环境phpstudy 中,默认的入口文件是 public,访问 public 会看到 TP5 成功页面。

目录介绍

一般开发中,代码都是写在 application 这个文件夹中

开发一个项目的时候,通常分为前台和后台,前台一般放在 index 模块中,后台一般放在 admin 模块中。

也可以自己新建一个模块

模块内部,都遵循着 MVC 架构

controller、model、view 都可以自己在模块中创建

下面对 application 文件夹中的文件做一些介绍;

image.png

command.php     命令行启动 TP5 框架需要读取的文件
common.php     常用的函数,都写在这个文件中
config.php     配置文件,开启什么,关闭什么,都在这设置
database.php     连接数据库时候读取的文件,比如用户名
route.php     路由文件,美化 url 的
tags.php     扩展框架的时候用到

THINKPHP5(TP5)新手入门必看教程 下载的第三方库都放在这里
入口文件

static     这里放的是 css、html 之类的静态文件
favicon.ico     这个是网站图标,在标签栏显示的
index.php     网站入口文件,所有的请求都会经过这里
robots.txt     禁止搜索引擎爬取页面的设置
router.php     在没有部署网站环境的情况下,配置这个文件可以让网站运行

开发规范(命名规范)

目录     只是小写字母和下划线构成
类的文件名以命名空间定义,并且命名空间和类库文件所在路径一致。
类的文件采用驼峰,并且首字母大写,其余文件为小写加下划线。
类名和类文件名保持一致,采用驼峰命名,首字母大写。
函数使用驼峰命名,首字母小写。
属性名采用驼峰,首字母小写
以双下划线开头的函数或方法为魔术方法。
常量以大写字母和下划线命名
表和字段必须以小写字母和下划线命名方式,不能以下划线开头。

模块设计

自己创建的 common 模块

可以自己创建 common 模块,然后里面写一些其他模块会常用的控制器,或者其他模块依赖的控制器,让他们继承。

image.png

惯例配置与应用配置与扩展配置

所谓应用位置,就是对 app 文件夹中文件都起作用的配置。

定义配置文件路径

创建了配置文件后,必须要在入口文件出定义配置文件的路径,并且要将配置文件命名为 config.php 才可以。
通常是不允许修改 TP5 框架的惯例配置的,这样不安全也不规范,只要定义了应用配置,那么应用配置文件中的配置的值会代替惯例配置中相同的配置,若是没有相同的值,那么就会新添加应用配置中的值。(惯例配置不会遭到修改)

image.png

如果项目比较大,配置信息也就多,放在一个配置文件中不合适,所以就有了扩展配置。优先级是扩展配置会覆盖 conf/config.php 配置,会覆盖 TP5 惯例配置。另外,扩展配置文件夹必须叫做 extra 文件夹,同时 TP5 为了人性化,允许与 conf/config.php 同级创建 database.php,但是,这个 database.php 是属于 extra 扩展配置的,拥有扩展配置的优先级覆盖。

场景切换配置

在惯例配置中,有 ’app_statues’ 参数,默认为空,但是可以在应用配置 conf/config.php 中设置该参数的值为场景名称,然后再创建该场景名称的配置文件,在里面写入想配置的参数就可以了。只要想切换场景,就修改 conf/config.php 这个应用配置文件中 ’app_status’ 的值即可。

惯例配置参数展示

在 conf/config.php 中,只要调整 ’app_status’ 的值为 home,那么就会调用 conf/home.php 中的配置。

应用配置实例

不过,由于 TP5 的 BUG,必须要在 conf/home.php 中将完整的 database.php 中的代码复制过来,否则,修改完一处参数后,整个应用配置只有修改后的这个参数,原来的 database.php 中的其他参数就默认没有了。

以上内容的配置,都是对整个应用起作用的,针对模块的单独的配置,下面会有。

模块配置与动态配置

模块配置

只要像上方那样做修改就可以了。

而动态配置,指的就是在控制器中进行配置,或者在控制器的方法中进行配置。说的再直白点,就是在类中用构造方法配合 config()函数进行配置,这种配置,对整个类都有作用。若想对指定方法配置,那么就在那个方法中用 config()函数进行配置就可以了。

image.png

我上面只是在方法中没有输出 config()配置罢了,不然只要访问方法,就可以看到。

环境配置

环境配置结合场景配置,先在根目录创建.env 文件,然后在应用配置的 config 文件中利用 think\Env 这个类中的 Env::get()函数获取.env 文件中的值,来对场景进行选择。这样就不用修改场景,只需要修改.env 中的配置的值就可以了。

绑定入口文件

绑定入口文件之后,就可以直接加控制器和方法来访问了,如果绑定了控制器,那么只要输入方法就可以了。

绑定入口文件

通常用于接口使用,比如让第三方接入的时候,不希望第三方访问我们的 index 模块或者 admin 模块,那么就用这个绑定入口文件来解决。

另外,一旦进行了入口文件的绑定,比如我上面绑定了 index,那么我也无法访问 admin 模块下的页面了。只能访问 index 模块中的页面

api 的应用

路由

若要使用路由,那么首先要开启路由,在 convention.php 文件中默认开启路由。
不过,因为要用到我们的 app 中,所以需要将开启语句复制到 conf/config.php 中。

开启路由

一旦设置好路由的规则后并且开启了 url_route_must=true,那么访问原来的 index/Index/info/id/ 5 就会报错,只能访问 news/5。所以,要想原来访问的地址也能访问,就将 url_route_must=false

info 方法需要传入形参 id

这里输出的是 news/10,因为这里之前定义了 index/index/info 的路由为 news/:id,如果没有定义过,那么输出就是原来的路径,而不是路由的路径

路由助手函数的输出

请求对象的获取

重点是 Request 类的使用,以及里面的方法

实际上,可以仔细参考一下这个框架的编写风格,感觉能学到不少编程思想。
由于上面返回的基本上都是关键数组,所以,如果想获取某个返回的数组中参数的值,可以直接在方法中加上参数名。

其他获取的一些内容

上面的 param 方法,会返回 get,post,pathinfo 这几个的值

image.png

上图第三个参数,是用来过滤获取到的值的,之所以是用 intval,是对获取到的值进行整数强制转换。

推荐自己写代码不用助手函数 input,用 request 类那样的写法,这样代码的可读性更高,但是 input 还是要了解,因为每个人的代码不同。

控制器中不建议使用 die 函数,可以用 return 来结束。

返回对象

上面用到了 Config 类,但是却忘记 use think/Config;

返回对象一般都是动态配置,因为不能保证每个控制器的返回对象都相同。

视图和模板

控制器渲染视图

控制器中,可以使用 view()函数来将与 controller 同一层的 view 模块中的与控制器同名的 index 文件夹中的与 index()方法同名的 intex.html 渲染出来。这个是一个对应关系。Index 控制器对应的是 view/index 文件夹

只要做到 view 文件夹路径后的文件名对应模块名就可以了,控制器中的 view()方法可以指定参数。

view()对应的路径就是 view 文件夹

view(‘./html/index.html’)函数里面传入这样的参数,代表是从入口文件进去了,而不是像 view(‘index’)这样代表 view/index.html

view()函数的参数不同,路径也不同

return view('index',['email'=>'123456@qq.com','name'=>'xxx'])

类似这样的用法,是 view()函数向指定要渲染的 html 页面传输变量 emali 和变量 name 的值。只需要在显示的位置 {$email} 或者 {$name} 就可以了。

渲染变量

要渲染的页面,只要输入大写的 STATAC,那么就会被下面这个 view 函数的第三个参数的值所替换,通俗点看就是渲染了常量。

第三个参数,渲染常量 STATAC

不过,上面的方法还是不推荐使用,代码可读性不高。实际开发中,最好是继承 think\Controller,然后,使用 $this->fetch()来渲染。用法和 view()一样。

推荐使用 $this->fethc()

也可以直接使用 $this->assign('a','a 的值') 来给要渲染的页面上的 a 变量赋值。

$this->assign()的用法

当 view 文件夹中没有任何要渲染的模板的时候,就用到了下面这个函数
同时也比较有用的一个方法是 $this->display(‘ 只显示我这个字符串内容 ’),这是只传入一个参数的时候。

传入两个参数的用法

在渲染页面的时候,TP5 框架让 html 页面中用的是花括号来表示变量的,但是,这个也可以在 tp5 中进行修改,让其他的符号或者其他的值来代替花括号的作用。

THINKPHP5(TP5)新手入门必看教程 几种渲染模板时候赋值的方式
赋值方法还挺多的

在配置文件中,可以设置下面这个参数的值,来全局替换某个 关键词 为某个值

设置全局值替换

常用的有一些系统默认设置的字符串替换:

这几个很常用

上面这些修改指定字符串值的方法,最神奇的使用地方就是,假如我们修改了某个文件的位置,那么只要设置指定字符串的值,就可以了,否则还得一个代码一个代码的进行修改。

先看看下面能输出哪些值,然后理解在 tp5 中,模板是如何获取这些值的

THINKPHP5(TP5)新手入门必看教程 输出查看 $_SERVER 有哪些值
THINKPHP5(TP5)新手入门必看教程 $_SERVER 的值
THINKPHP5(TP5)新手入门必看教程 模板获取 $_SERVER 中指定的值
THINKPHP5(TP5)新手入门必看教程 获取其他的值
获取更多的值

上面这个错了, 是获取 app 的路径, 不是当前页面的路径

在模板中进行变量计算的时候,可以用 #进行占位,之所以要占位,是因为 {$email|md5} 是把 email 这个参数传入 md5 这个函数中,而有的函数,有好几个参数传入,也有传入的顺序,所以就需要用到# 来进行占位。

THINKPHP5(TP5)新手入门必看教程 模板中进行变量的计算
THINKPHP5(TP5)新手入门必看教程 还可以同时叠加好几个函数
变量遇到 js

下面这样的注释,更加安全,因为 html 代码中看不到。如果用 html 的注释,那么就会在前端的网页源码中找到

更安全的注释

模板循环标签

循环标签的使用

在模板中,用 {volist name="list" id="data"} {/volist} 这一对标签来将控制器中的数组 list 进行循环,上图中会循环输出二维数组 list 中全部的 name 值,还附带 <p> 标签。

list 数组

offset 参数代表从数组的几个元素开始遍历,length 参数代表遍历的长度,mod 代表对当前循环次数取余。

THINKPHP5(TP5)新手入门必看教程 其他参数
THINKPHP5(TP5)新手入门必看教程 foreach 迭代
THINKPHP5(TP5)新手入门必看教程 for 循环
for 在模板中的其他参数

比较标签

THINKPHP5(TP5)新手入门必看教程 比较标签,eq 和 equal 相等的
THINKPHP5(TP5)新手入门必看教程 不相等的比较标签
THINKPHP5(TP5)新手入门必看教程 大于、小于标签
THINKPHP5(TP5)新手入门必看教程 大于等于、小于等于
image.png

条件判断标签

THINKPHP5(TP5)新手入门必看教程 Think.get.level 这里的 level 是 get 传的参数
image.png

还有 notbetween 这样的参数

几个常用标签

上面的 if 标签内部还可以用 AND 和 OR 这样的逻辑语句

模板的布局包含和继承

当在 block 中嵌套使用 block 的时候,就可以向下方这样使用

{__block__}是使用被继承薄板中的值

这部分知识,主要就是 include,extend,block 的灵活运用。

下面可以尝试做 ThinkPHP5 开发的项目来进行实战了。实战中再多记录一些笔记。

正文完
 0