thinkphp5常⽤函数汇总_THINKPHP5(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 ⽹站⼊⼝⽂件,所有的请求都会经过这⾥
< 禁⽌搜索引擎爬取页⾯的设置
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','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的注释,那么就会在前端的⽹页源码中到
更安全的注释
模板循环标签
循环标签的使⽤
网页设计html代码大全继承关系在模板中,⽤{volist name="list" id="data"} {/volist}这⼀对标签来将控制器中的数组list进⾏循环,上图中会循环输出⼆维数组list中全部的name值,还附带
标签。
list数组
offset参数代表从数组的⼏个元素开始遍历,length参数代表遍历的长度,mod代表对当前循环次数取
余。
其他参数
foreach迭代
for循环
for在模板中的其他参数
⽐较标签
⽐较标签,eq和equal相等的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论