• 售前

  • 售后

热门帖子
入门百科

ThinkPHP5 的简单搭建和使用详解

[复制链接]
阿威来自山西 显示全部楼层 发表于 2021-10-26 12:38:52 |阅读模式 打印 上一主题 下一主题
0X01 Thinkphp 的安装
我这里选择的是使用 windows 下的 composer 举行安装,收下首先下载 composer 这个工具,安装完成以后进入我们想要创建项目标文件夹输入下面的下令
  1. composer create-project topthink/think tp5 dev-master --prefer-dist
复制代码
如许就会在当前目录下形成一个 名为 tp5 的文件夹,这个文件夹中存放的就是 thinkphp5 的根本的框架
0X02 重点目录结构及文件先容
1.目录结构
application : 应用目录,我们的模型视图控制器都会放在这个文件夹下,这是我们开辟的主阵地
public : 这个是我们项目标入口文件,thinkphp 是一个单一入口的框架
thinkphp : 框架的核心目录
2.关键文件

application/config.php 项目配置文件,开启 debug 调试模式(在开辟中)
application/database.php 数据库配置文件
public/index.php 项目入口文件,定义了应用目录的位置以及包含框架启动文件来启动框架
0X03 配置虚拟主机
1.httpd.conf 中判断下面是否被解释,如果被解释请取消解释
(1)Include conf/vhosts.conf (2)LoadModule vhost_alias_module modules/mod_vhost_alias.so
2.删除 vhost.conf 中原有的默认内容,添加如下内容
  1. <VirtualHost *:80>
  2. DocumentRoot "E:\phpstudy\PHPTutorial\WWW\tp5\public"
  3. ServerName localhost  
  4. <Directory "E:\phpstudy\PHPTutorial\WWW\tp5\public">
  5.   Options FollowSymLinks ExecCGI
  6.   AllowOverride All
  7.   Order allow,deny
  8.   Allow from all
  9.   Require all granted
  10. </Directory>
  11. </VirtualHost>
复制代码
3.配置 URL 重写
http.conf 中解开下面的解释
  1. LoadModule rewrite_module modules/mod_rewrite.so
复制代码
并在虚拟主机配置中写上
  1. AllowOverride All
复制代码
注意:如果使用 phpstudy 的话,官方默认的 .htaccess 是不可以的,需要修改成下面这个样子
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine on
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
  6. </IfModule>
复制代码
0X04 根本的写法
1.控制器的根本写法
(1)模块中的控制器实际上就是一个一个的类,这个类写的时间要继承 Controller 并且要在前面写上定名空间
(2) thinkPHP5 使用 return 来返回一个html ,主动渲染到页面上
(3)tp5 使用的是 $this->requrst->param() 接受参数,当然也要在开始写上定名空间
示例代码:
  1. <?php
  2. namespace app\index\controller;
  3. use think\Controller;
  4. use think\Request;
  5. class Index extends Controller
  6. {
  7. public function index()
  8. {
  9.   print_r($this->request->param());
  10.   return '<style type="text/css">*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p> ThinkPHP V5<br/><span style="font-size:30px">十年磨一剑 - 为API开发设计的高性能框架</span></p><span style="font-size:22px;">[ V5.0 版本由 <a href="http://www.qiniu.com" rel="external nofollow" target="qiniu">七牛云</a> 独家赞助发布 ]</span></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ad_bd568ce7058a1091"></think>';
  11. }
  12. }
复制代码
我们如许访问
http://localhost/index.php/index/index/index/a/3/b/4/c/5
效果:

2.模板和控制器的关系

每一个模块都有自己的控制器、视图、和模型,访问的时间是按照 index.php/模块/控制器/方法,访问的,然后每一个控制器在 view 中对应着一个同名的文件夹,好比说 controller/Index 控制器, view/Index 就是这个控制器对应的模板文件夹,那么每一个方法都会在模板文件夹下对应一个同名的 html 文件作为这个方法的模板
tp5 是通过
  1. $this->assign('data',$data);
复制代码
举行赋值并通过
  1. return $this->fetch('模板名');
复制代码
举行渲染的
示例代码:

index/controller/Index.php
  1. <?phpnamespace app\index\controller;use think\Controller;class Index extends Controller{ public function index() {  $data = "K0rz3n";  $this->assign('data',$data);  return $this->fetch(); }}
复制代码
Index/view/Index/index.html
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.   hello {$data}!
  6. </body>
  7. </html>
复制代码
3.对 SEO 友好的路由
我们知道,我们的搜索引擎抓取页面最多抓三层,但是我们刚刚写的那种 URL 已经太多层了,这非常倒霉于搜索引擎的收录,于是 tp5 给我们提供了一种简化的方法,就是 route.php
示例代码:
  1. return [
  2. '__pattern__' => [
  3.   'name' => '\w+',
  4. ],
  5. '[hello]'  => [
  6.   // ':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']],
  7.   // ':name' => ['index/hello', ['method' => 'post']],
  8. ],
  9. 'hello/[:name]' => ['index/Index/hello',['method' => 'get','ext' => 'html']],
  10. ];
复制代码
这个意思就是我们访问 hello/name 就会转给 index/Index/hello ,并且要求是 Get 方法,后缀名是 HTML
配置好后我们只要添加如许几个东西就 OK 了
  1. public function hello($name = 'zhangsan')
  2. {
  3.   $this->assign('name',$name);
  4.   return $this->fetch();
  5. }
复制代码
hello.html
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.   hello {$name}!
  6. </body>
  7. </html>
复制代码
如图所示:

当然在这种情况下参数名还是会很多斜杠,还是不是很友好,于是我们可以在 config.php 中将默认的斜杠分隔符举行修改,改成其他的如许就制止了这个问题
4.URL 主动天生

tp5 给我们提供了 url() 这个函数帮我们主动天生 Url
  1. public function url()
  2. {
  3.   echo url('url2','a=1&b=2');
  4. }
复制代码
这个方法运行的效果就是
/index/index/url2/a/1/b/2.html
5.哀求和相应


1.接收哀求的参数

访问: http://localhost/index/index/req/username/test
通过以下代码可以得到 username
  1. echo $this->request->param('username');
复制代码
大概我们可以使用函数助手 input(),下面这段代码能到达和上面一样的效果
  1. echo input('username');
复制代码
包括我们通过下面的代码获取 url
  1. echo $this->request->url();
复制代码
这个也有自己的函数助手
  1. echo request()->url();
复制代码
我们可以获分别获取 get post cookie file 等方式的参数
  1. $this->request->get()
  2. $this->request->post()
  3. $this->request->cookie()
  4. $this->request->file()
复制代码
大概实例化一个 Request 对象,但是这种方法只能接受 url 反面是 & 毗连的参数,重写的似乎不可
  1. $Request = Request::instance()
  2. $request->get()
  3. $Rquest->post()
  4. $Request->cookie()
  5. $Request->file()
复制代码
2.绑定参数
  1. $this->request->bind('user',"hh");
  2. echo $this->request->user;
复制代码
那么为什么哀求还要动态地绑定参数呢?因为很多时间需要传递 session 的值,来维持会话
3.返回值

可以返回多种格式的值 好比 json xml 大概通过 $this->fetch() 来举行模板渲染
  1. return json($data);
  2. return xml($data);
复制代码
当然我们的 tp 也有对一些东西的封装,好比实现输出一段话然后举行跳转到某个方法,大概是直接举行重定向
  1. return json($data);
  2. return xml($data);
复制代码
6.模板与输出
一样平常的模板渲染就不想先容了,这里说下模板布局,实在就是在 view 文件夹下有一个 layout.html 文件,这个文件的内容是如许的
layout.html
  1. {include file="/index/header"/}
  2. {__CONTENT__}
  3. {include file="/index/footer"/}
复制代码
然后我们写模板的时间就在最上面加上对这个文件的引用
  1. {layout name="layout"/}
复制代码
如果我们想全局引入页眉页脚,这个配置需要在 config.php 中举行设置,在模板配置中添加下面的代码
  1. 'layout_on' => 'true',
  2. 'layout_name' => 'layout',
  3. 'layout_item' => '{__CONTENT__}',
复制代码
如许的话就是举行了全配置但是如果我们有些页面不想如许配置的话我们需要在如许的页面上写上
  1. {__NOLAYOUT__}
复制代码
如果我们模板文件中的静态文件路径想要不写死的话,我们可以在 php 文件中的 fecth 前设置字符更换
  1. $this->view->replace(['__PUBLIC__' => '/static',]);
复制代码
如果我们想每个方法都使用这个操纵,我们就把上面这段代码放到 控制器的构造函数里面
  1. function __construct(){ parent::__construct(); $this->view->replace(['__PUBLIC__' => '/static',]);}
复制代码
0X05 参考

https://www.kancloud.cn/thinkphp/thinkphp5-guide/30551
以上就是本文的全部内容,盼望对大家的学习有所资助,也盼望大家多多支持脚本之家。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作