首页 > 编程知识 正文

tp5.1框架,tp5.0开发手册

时间:2023-05-05 01:52:51 阅读:189713 作者:3629

安装设置

在官方网站上下载TP5完整版(初学者学习用)

解压缩到本地开发环境phpstudy时,缺省门户文件为public,访问public将显示TP5的成功页面。

目录介绍

在一般的开发中,代码写在名为APP的文件夹中

开发项目时,通常分为前置模块和后置模块,前置模块和后置模块。

你也可以自己制作新的模块

模块内部全部遵从MVC体系结构

控制器、模型和视图都可以自己在模块中创建

介绍应用程序文件夹中的文件。

image.png

在command.php命令行中启动TP5框架需要读取的文件

common.php中所有常用的函数都写在此文件中

config.php配置文件,打开什么和关闭什么在此设置

database.php连接到数据库时读取的文件。 例如,用户名

route.php美化路由文件、url

tags.php扩展框架时使用

您下载的第三方库位于此处

门户文件

静态放在这里的是css和html等静态文件

favicon.ico这是网站图标,显示在选项卡栏中

index.php站点门户文件的所有请求都将通过此处

禁止robots.txt搜索引擎爬网页面的设置

如果没有部署网站环境,router.php可以通过设置此文件来运行网站

开发范围(命名范围) )

目录只由小写字母和下划线组成

的文件名在命名空间中定义,命名空间和类库文件的路径匹配。

类文件采用驼峰匹配,首字母大写,其馀文件小写加下划线。

类名和类文件名一致,采用驼峰名称,首字母大写。

将函数命名为驼峰匹配,并将首字母大写。

属性名称采用驼峰匹配,首字母为小写

以双下划线开头的函数或方法是魔术方法。

给常数起大写字母和下划线的名字

表和字段必须以小写字母和下划线命名,且不能以下划线开头。

模块设计

自己创建的common模块

您可以自己创建common模块,并编写和继承其他模块常用的控制器以及其他模块依赖的控制器。

image.png

配置和扩展配置的设置和应用

应用于:对文件夹中的所有文件起作用的展开。

定义配置文件路径

创建配置文件后,必须将定义配置文件的路径写入入口文件。 必须将配置文件命名为config.php。

通常,不允许更改TP5框架的配置。 这既不是安全的也不是规范的。 只要定义了应用程序配置文件,应用程序配置文件中的配置文件值就会替换配置中的同一配置文件。 如果没有相同的值,则会添加应用程序配置文件中的新值。 (惯例配置保持不变)

image.png

项目越大,配置信息也越多,不适合放在一个配置文件中,因此存在扩展配置。 优先级是扩展配置涵盖conf/config.php配置,以及TP5惯例配置。 另外,扩展配置文件夹必须称为extra文件夹。 另外,TP5为了提高人性,许可在与conf/config.php相同的水平上制作database.php。 但是,该database.php属于extra扩展配置,具有扩展配置的优先级。

场景切换结构

常规配置具有“状态”参数,缺省为空,但在应用程序配置conf/config.php中将该参数的值设置为场景名称,然后为该场景名称创建配置文件,并欢呼时如果希望切换场景,可以修改名为conf/config.php的应用配置文件中的“状态”的值。

查看常规配置参数

在conf/config.php中,将状态的值调整为home会调用conf/home.php的配置。

应用配置示例

但是,由于TP5中存在错误,必须将完整的database.php代码复制到conf/home.php中。 否则,在修改单个参数后,整个应用程序配置将仅为修改的此参数,而原始database.php中的其他参数将不再是缺省参数。

以上内容的配置,

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

模块配置与动态配置

模块配置

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

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

image.png

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

环境配置

环境配置结合场景配置,先在根目录创建.env文件,然后在应用配置的config文件中利用 thinkEnv 这个类中的 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

不过,上面的方法还是不推荐使用,代码可读性不高。实际开发中,最好是继承thinkController,然后,使用$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值,还附带

标签。

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开发的项目来进行实战了。实战中再多记录一些笔记。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。