本文主要介绍ThinkPHP5的简单构造和详细使用方法。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。
0X01 Thinkphp 的安装
这里我选择使用windows下的composer进行安装。先拿下载composer这个工具。安装后,进入我们想要创建项目的文件夹,并输入以下命令。
composer create-project top think/think tp5 dev-master-prefer-dist
这样在当前目录下就会形成一个名为tp5的文件夹,里面会存放thinkphp5的基本框架。
0X02 重点目录结构及文件介绍
1.目录结构
应用:应用目录,我们的模型视图控制器会放在这个文件夹里,这是我们开发的主要位置。
Public:这是我们项目的入口文件,thinkphp是单入口框架。
Thinkphp:框架的核心目录
2.关键文件
Application/config.php项目配置文件,并打开debug调试模式(正在开发中)
application/database.php数据库配置文件
public/index.php项目入口文件定义了应用程序目录的位置,并包含启动框架的框架启动文件。
0X03 配置虚拟主机
1.httpd.conf 中判断下面是否被注释,如果被注释请取消注释
(1)包含conf/vhosts . conf(2)load module vhost _ alias _ module modules/mod _ vhost _ alias . so
2.删除 vhost.conf 中原有的默认内容,添加如下内容
虚拟主机*:80
document root ' E:\ PHP study \ PHP tutorial \ WWW \ tp5 \ public '
服务器名称本地主机
目录“E:\ PHP study \ PHP tutorial \ WWW \ tp5 \ public”
选项跟随符号链接ExecCGI
全部覆盖
订单允许、拒绝
允许所有人
要求全部授权
/目录
/虚拟主机
3.配置 URL 重写
解开http.conf中的以下注释
load module rewrite _ module modules/mod _ rewrite . so
并写入虚拟主机配置
全部覆盖
注意:如果使用phpstudy,官方默认。不允许htaccess,需要修改成这样。
IfModule mod_rewrite.c
重写引擎开启
第二次重写% {请求文件名}!-d
第二次重写% {请求文件名}!-f
重写者^(.*)$ index.php[L,E=PATH_INFO:$1]
/IfModule
0X04 基本的写法
1.控制器的基本写法
(1)模块中的控制器实际上是一个一个的类。写这个类的时候,应该继承控制器,把命名空间写在前面。
(2) thinkPHP5使用return返回一个html,自动渲染到页面。
(3)tp5使用$this-requrst-param()接受参数,当然名字空间要写在开头。
示例代码:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
命名空间app \ index \ controller
使用思考\控制器;
使用思考\请求;
类别索引扩展控制器
{
公共函数索引()
{
print _ r($ this-request-param());
return ' style type=' text/CSS ' * { padding:0;边距:0;} .think _ default _ text { padding:4px 48px;} a { color:# 2 e5cd 5;光标:指针;text-decoration:none } a:hover { text-decoration:underline;}正文{背景:# ffffont-family:'世纪歌特','微软雅黑';颜色:# 333;font-size:18px } h1 { font-size:100px;字体粗细:正常;边距-底部:12px} p{行高:1.6emfont-size:42px }/style div style=' padding:24px 48px;H1:)/h1 pthinkphp5br/span style=' font-size:30px '-一个为API开发设计的高性能框架/span/PSP an style=' font-size:22px;V5.0版本由独家赞助发布a href=' http://www . qiniu . com ' rel=' external no follow ' target=' qiniu '齐牛云/a]/span/div script type=' text/JavaScript ' src=' 3359tajs.qq.com/stats? sId=9347272 ' charset=' UTF-8 '/script script type=' text/JavaScript ' src=' https://e . top think . com/Public/static/client . js '/script think
}
}
我们像这样拜访。
http://本地主机/index . PHP/index/index/index/a/3/b/4/c/5
结果:
2.模板和控制器的关系
每个模块都有自己的控制器、视图和模型,可以根据index.php/模块/控制器/方法进行访问。然后,每个控制器在视图中对应一个同名文件夹,比如controller/Index controller。view/Index是这个控制器对应的模板文件夹,所以每个方法都会在模板文件夹下对应一个与这个方法的模板同名的html文件。
Tp5通过
$this-assign('data ',$ data);
赋值并通过
返回$ this-fetch(' template name ');
提供
示例代码:
索引/控制器/索引. php
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
命名空间app \ index \ controller
使用思考\控制器;
类别索引扩展控制器
{
公共函数索引()
{
$ data=' K0rz3n
$this-assign('data ',$ data);
返回$ this-fetch();
}
}
Index/view/Index/index.html
超文本标记语言
头
/头
身体
你好{$data}!
/body
/html
3.对 SEO 友好的路由
我们知道,我们的搜索引擎抓取页面最多三层,但是我们刚刚写的URL层数太多,不利于搜索引擎收录,所以tp5为我们提供了一个简化的方法,即route.php。
示例代码:
返回[
__pattern__'=[
name'='\w ',
],
[你好]'=[
//':id'=['index/hello ',['method'='get'],['id'='\d ']],
//':name'=['index/hello ',['method'='post']],
],
hello/[:name]'=[' Index/Index/hello ',['method'='get ',' ext'='html']],
];
这就意味着当我们访问hello/name的时候,会传递给index/Index/hello,请求是Get方法,后缀是HTML。
配置好之后,我们只需要添加几个这样的东西。
公共函数hello($name='张三')
{
$this-assign('name ',$ name);
返回$ this-fetch();
}
hello.html
超文本标记语言
头
/头
身体
你好{$name}!
/body
/html
如图所示:
当然,在这种情况下,参数名中还是会有很多斜杠,还是不太友好,所以我们可以修改config.php默认的斜杠分隔符,改成别的,这样就避免了这个问题。
4.URL 自动生成
Tp5为我们提供了url(),这个函数帮助我们自动生成Url。
公共函数url()
{
回显url('url2 ',' a=1b=2 ');
}
运行此方法的结果是
/index/index/url2/a/1/b/2.html
5.请求和响应
1.接收请求的参数
访问:3358本地主机/索引/索引/请求/用户名/测试
用户名可以通过下面的代码获得
echo $this-request-param('用户名');
或者我们可以使用函数助手输入()。下面的代码可以达到和上面一样的效果。
回显输入(“用户名”);
我们包括通过以下代码获取url
echo $ this-request-URL();
这个也有自己的功能助手。
echo请求()-URL();
我们可以获取post cookie文件的参数等。
$this-request-get()
$this-request-post()
$this-request-cookie()
$this-request-file()
或者实例化一个请求对象,但是这个方法只能接受url后面跟连接参数,好像不能重写。
$Request=Request:instance()
$request-get()
$Rquest-post()
$Request-cookie()
$Request-file()
2.绑定参数
$this-request-bind('user ',' hh ');
echo $ this-request-user;
那么为什么请求要动态绑定参数呢?因为经常需要传递session的值来维护会话。
3.返回值
您可以返回各种格式的值,比如json xml,或者通过$this-fetch()呈现模板。
返回JSON($ data);
返回XML($ data);
当然我们的tp也封装了一些东西,比如输出一个段落然后跳转到某个方法,或者直接重定向。
返回JSON($ data);
返回XML($ data);
6.模板与输出
一般的模板渲染我就不介绍了。这里,模板布局实际上是视图文件夹下的layout.html文件。该文件的内容如下
layout.html
{include file='/index/header'/}
{__CONTENT__}
{包含文件='/索引/页脚'/}
然后当我们编写模板时,我们在顶部添加一个对这个文件的引用。
{布局名称='布局'/}
如果我们希望全局引入页眉和页脚,需要在config.php中设置该配置,下面的代码被添加到模板配置中。
layout_on'='true ',
layout_name'='layout ',
layout_item'='{__CONTENT__} ',
在这种情况下,它是完全配置的,但如果我们的某些页面不想这样配置,我们需要将其写在这样的页面上。
{__NOLAYOUT__}
如果我们模板文件中的静态文件路径没有被写死,我们可以在php文件中的fecth之前设置字符替换。
$ this-view-replace([' _ _ PUBLIC _ _ '='/static ',]);
如果我们希望每个方法都使用这个操作,我们将把上面的代码放在控制器的构造函数中。
function __construct(){
parent:_ _ construct();
$ this-view-replace([' _ _ PUBLIC _ _ '='/static ',]);
}
0X05 参考
https://www.kancloud.cn/thinkphp/thinkphp5-guide/30551
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。