THINKPHP5是一个很好的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    扩展框架的时候用到

下载的第三方库都放在这里

入口文件

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中进行修改,让其他的符号或者其他的值来代替花括号的作用。

几种渲染模板时候赋值的方式

赋值方法还挺多的

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

设置全局值替换

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

这几个很常用

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

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

输出查看$_SERVER有哪些值

$_SERVER的值

模板获取$_SERVER中指定的值

获取其他的值

获取更多的值

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

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

获取其他的值

模板中进行变量的计算

还可以同时叠加好几个函数

变量遇到js

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

更安全的注释

模板循环标签

循环标签的使用

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

list数组

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

其他参数

foreach迭代

for循环

for在模板中的其他参数

比较标签

比较标签,eq和equal相等的

不相等的比较标签

大于、小于标签

大于等于、小于等于

image.png

条件判断标签

Think.get.level这里的level是get传的参数

image.png

还有notbetween这样的参数

几个常用标签

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

模板的布局包含和继承

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

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

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

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

THINKPHP5(TP5)新手入门必看教程相关推荐

  1. 新手入门必看教程:矢量绘图控件VectorDraw 常见问题整理大全(一)

    VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库.有了VDF提供的功能,您可以轻松地创建.编辑.管理.输出.输入和打印2D和3D图形文件.该库 ...

  2. Leap Motion新手入门必看教程

    : 到leap motion后, 第一件事情是访问官方网站下载对应的电脑驱动 http://leapmotion.com/setup 选择对应的操作系统(windows或MAC)下载相应的驱动并进行安 ...

  3. 【学点Linux】Linux该如何学习(新手入门必看)

    Linux该如何学习(新手入门必看) 文章目录 Linux该如何学习(新手入门必看) 如何去学习 碰到问题怎么办 英文读不懂怎么办 忘记Windows的思维方式 无意间在一处看到的,分享出来. 如何去 ...

  4. powershell 开发入门_详谈Ubuntu PowerShell(小白入门必看教程)

    早在去年八月份PowerShell就开始开源跨平台了,但是一直没有去尝试,叫做PowerShell Core. 这里打算简单介绍一下如何安装和简单使用,为还不知道PowerShell Core on ...

  5. IntelliJ IDEA 最常用配置详细图解,新手入门必看

    转载自   IntelliJ IDEA 最常用配置详细图解,新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工. 比如:设置文件字体大小,代 ...

  6. 旅行青蛙前期怎么玩 新手入门必看攻略

    旅行青蛙前期怎么玩?有什么新手攻略吗?相信大家最近都被这款游戏刷屏了,感觉全世界都在玩,很多玩家都不小心入坑了,下面就和小编一起去看看这游戏要怎么玩吧. 旅行青蛙前期怎么玩? 主角是一只可爱的小青蛙, ...

  7. 撼龙图怎么开鸿蒙炁灵,【一人之下】新手入门必看攻略,萌新技巧超详细攻略...

    <一人之下>新手该怎么玩呢?新手需要掌握什么技巧呢?小编为大家整理了<一人之下>新手入门超详细攻略,一起来看看吧. 一.装备 6件防具.1把武器.6个饰品.还有炁灵和铭文. 装 ...

  8. JavaScript基础教程新手入门必看

    对前端稍微有点了解的初学者都知道,JavaScript是必不可少的工具.毫不夸张的说,大部分网页都使用了JavaScript,想要成为一个优秀的前端工程师,做出漂亮令用户满意的网页,熟练掌握JavaS ...

  9. Linux该如何学习(新手入门必看)

    本节旨在介绍对于初学者如何学习 Linux 的建议.如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法. 如何去学习 学习大多类似鹿丁解牛,对事物的认识一般都是由 ...

  10. 新手入门必看:使用Selenium进行自动化测试

    对于很多刚入门的测试新手来说,大家都将自动化测试作为自己职业发展的一个主要阶段.可是,在成为一名合格的自动化测试工程师之前,我们不仅要掌握相应的理论知识,还要进行大量的实践,积累足够的经验,以便快速适 ...

最新文章

  1. 深入理解ajax系列第一篇——XHR对象
  2. Zigbee费尽心思做mesh网究竟在智能家居中有什么用?
  3. 中国搜 为人民服务 整合本地搜索引擎 出差旅游搜索国外国内当地服务网站 快速进行本地资源查找利用...
  4. 在SQL中使用PL/SQL函数存在的问题
  5. 社区口碑营销案例分析
  6. Cisco路由器配置命令
  7. 【教学类-07-02】20220330 5以内加减法不重复题 及生成word打印docx纸(方法二)(Python VS)
  8. 页面置换算法(FIFOLRU)
  9. Nginx文件服务器配置及使用
  10. 华为策略路由,实现双线选路上网
  11. U盘(移动硬盘)介质写入保护解决办法
  12. RationalDMIS 2020 网络报表/网络编程连接设置
  13. RTB实时竞价, 重塑网络媒体交易规则
  14. Exponetial BackOff(指数退避算法)
  15. 推荐一个练习英语听力的网站
  16. [设计模式] 设计模式面面观(3):单件模式(Singletion)-创建型模式
  17. android如何使用ios14组件,iOS14如何添加和删除小组件 iOS14添加和删除小组件的方法...
  18. zebradesginer zpl代码_老司机为您win7系统安装斑马GK888t打印机驱动的操作技巧
  19. 使用echarts 画地球 带lines3D 并有动画效果
  20. 记几个智能手表相关芯片 蓝牙芯片 低功耗

热门文章

  1. VMware Workstation 错误:“以独占方式锁定此配置文件失败。另一个正在运行的VMware进程可能正在使用配置文件。”的解决方法
  2. perf top 实时分析 CPU 使用情况
  3. 软考中级软件设计师基础整理(1.计算机组成与体系结构)
  4. 机器学习Class 6:分类及描述
  5. The requested operation requires elevation问题解决
  6. SSM毕设项目基于网页的车辆检测站登录软件reo2q(java+VUE+Mybatis+Maven+Mysql)
  7. iOS NSString,NSLog添加%百分号和引号等符号
  8. Failed to start LSB: Bring up/down错误解决方法
  9. 作为一个程序员对特修斯之船的理解
  10. html卡通人物旋转,AE教程-把平面卡通人物制作成头部扭动旋转动画 3D Head Rotation for Detailed Artwork 带中文字幕...