首頁 php框架 ThinkPHP 小白筆記之簡單快速建立ThinkPHP5並使用

小白筆記之簡單快速建立ThinkPHP5並使用

Nov 15, 2021 pm 04:00 PM
thinkphp5

下面thinkphp框架教程栏目将给大家讲解ThinkPHP5 的简单搭建和使用,希望对需要的朋友有所帮助!

0X01 Thinkphp 的安装

我这里选择的是使用 windows 下的 composer 进行安装,收下首先下载 composer 这个工具,安装完成以后进入我们想要创建项目的文件夹输入下面的命令

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 中原有的默认内容,添加如下内容

<VirtualHost *:80>
 DocumentRoot "E:\phpstudy\PHPTutorial\WWW\tp5\public" 
 ServerName localhost  
 <Directory "E:\phpstudy\PHPTutorial\WWW\tp5\public">
  Options FollowSymLinks ExecCGI
  AllowOverride All
  Order allow,deny
  Allow from all
  Require all granted
 </Directory>
</VirtualHost>
登入後複製

3.配置 URL 重写

http.conf 中解开下面的注释

LoadModule rewrite_module modules/mod_rewrite.so
登入後複製

并在虚拟主机配置中写上

AllowOverride All
登入後複製

注意:如果使用 phpstudy 的话,官方默认的 .htaccess 是不可以的,需要修改成下面这个样子

<IfModule mod_rewrite.c>
 RewriteEngine on

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
登入後複製

0X04 基本的写法

1.控制器的基本写法

(1)模块中的控制器实际上就是一个一个的类,这个类写的时候要继承 Controller 并且要在前面写上命名空间

(2) thinkPHP5 使用 return 来返回一个html ,自动渲染到页面上

(3)tp5 使用的是 $this->requrst->param() 接受参数,当然也要在开始写上命名空间

示例代码:

<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
class Index extends Controller
{
 public function index()
 {
  print_r($this->request->param());
  return &#39;<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><p 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></p><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>&#39;;
 }
}
登入後複製

我们这样访问

http://localhost/index.php/index/index/index/a/3/b/4/c/5

结果:

2.模板和控制器的关系

每一个模块都有自己的控制器、视图、和模型,访问的时候是按照 index.php/模块/控制器/方法,访问的,然后每一个控制器在 view 中对应着一个同名的文件夹,比如说 controller/Index 控制器, view/Index 就是这个控制器对应的模板文件夹,那么每一个方法都会在模板文件夹下对应一个同名的 html 文件作为这个方法的模板

tp5 是通过

$this->assign(&#39;data&#39;,$data);
登入後複製

进行赋值并通过

return $this->fetch(&#39;模板名&#39;);
登入後複製

进行渲染的

示例代码:

index/controller/Index.php

fetch();
 }
}
登入後複製

Index/view/Index/index.html

<html>
 <head>

 </head>
 <body>
  hello {$data}!
 </body>
</html>
登入後複製

3.对 SEO 友好的路由

我们知道,我们的搜索引擎抓取页面最多抓三层,但是我们刚刚写的那种 URL 已经太多层了,这非常不利于搜索引擎的收录,于是 tp5 给我们提供了一种简化的方法,就是 route.php

示例代码:

return [
 &#39;__pattern__&#39; => [
  &#39;name&#39; => &#39;\w+&#39;,
 ],
 &#39;[hello]&#39;  => [
  // &#39;:id&#39; => [&#39;index/hello&#39;, [&#39;method&#39; => &#39;get&#39;], [&#39;id&#39; => &#39;\d+&#39;]],
  // &#39;:name&#39; => [&#39;index/hello&#39;, [&#39;method&#39; => &#39;post&#39;]],
 ],

 &#39;hello/[:name]&#39; => [&#39;index/Index/hello&#39;,[&#39;method&#39; => &#39;get&#39;,&#39;ext&#39; => &#39;html&#39;]],

];
登入後複製

这个意思就是我们访问 hello/name 就会转给 index/Index/hello ,并且要求是 Get 方法,后缀名是 HTML

配置好后我们只要添加这样几个东西就 OK 了

public function hello($name = &#39;zhangsan&#39;)
 {
  $this->assign(&#39;name&#39;,$name);
  return $this->fetch();
 }
登入後複製

hello.html

<html>
 <head>

 </head>
 <body>
  hello {$name}!
 </body>
</html>
登入後複製

如图所示:

当然在这种情况下参数名还是会很多斜杠,还是不是很友好,于是我们可以在 config.php 中将默认的斜杠分隔符进行修改,改成其他的这样就避免了这个问题

4.URL 自动生成

tp5 给我们提供了 url() 这个函数帮我们自动生成 Url

public function url()
 {
  echo url(&#39;url2&#39;,&#39;a=1&b=2&#39;);
 }
登入後複製

这个方法运行的结果就是

/index/index/url2/a/1/b/2.html

5.请求和响应

1.接收请求的参数

访问: http://localhost/index/index/req/username/test

通过以下代码可以得到 username

echo $this->request->param(&#39;username&#39;);
登入後複製

或者我们可以使用函数助手 input(),下面这段代码能达到和上面一样的效果

echo input(&#39;username&#39;);
登入後複製

包括我们通过下面的代码获取 url

echo $this->request->url();
登入後複製

这个也有自己的函数助手

echo request()->url();
登入後複製

我们可以获分别获取 get post cookie file 等方式的参数

$this->request->get()
$this->request->post()
$this->request->cookie()
$this->request->file()
登入後複製

或者实例化一个 Request 对象,但是这种方法只能接受 url 后面是 & 连接的参数,重写的好像不行

$Request = Request::instance()

$request->get()
$Rquest->post()
$Request->cookie()
$Request->file()
登入後複製

2.绑定参数

$this->request->bind(&#39;user&#39;,"hh");
 echo $this->request->user;
登入後複製

那么为什么请求还要动态地绑定参数呢?因为很多时候需要传递 session 的值,来维持会话

3.返回值

可以返回多种格式的值 比如 json xml 或者通过 $this->fetch() 来进行模板渲染

return json($data);
return xml($data);
登入後複製
登入後複製

当然我们的 tp 也有对一些东西的封装,比如实现输出一段话然后进行跳转到某个方法,或者是直接进行重定向

return json($data);
return xml($data);
登入後複製
登入後複製

6.模板与输出

一般的模板渲染就不想介绍了,这里说下模板布局,其实就是在 view 文件夹下有一个 layout.html 文件,这个文件的内容是这样的

layout.html

{include file="/index/header"/}
{__CONTENT__}
{include file="/index/footer"/}
登入後複製

然后我们写模板的时候就在最上面加上对这个文件的引用

{layout name="layout"/}
登入後複製

如果我们想全局引入页眉页脚,这个配置需要在 config.php 中进行设置,在模板配置中添加下面的代码

&#39;layout_on&#39; => &#39;true&#39;,
&#39;layout_name&#39; => &#39;layout&#39;,
&#39;layout_item&#39; => &#39;{__CONTENT__}&#39;,
登入後複製

这样的话就是进行了全配置但是如果我们有些页面不想这样配置的话我们需要在这样的页面上写上

{__NOLAYOUT__}
登入後複製

如果我们模板文件中的静态文件路径想要不写死的话,我们可以在 php 文件中的 fecth 前设置字符替换

$this->view->replace([&#39;__PUBLIC__&#39; => &#39;/static&#39;,]);
登入後複製

如果我们想每个方法都使用这个操作,我们就把上面这段代码放到 控制器的构造函数里面

function __construct(){
 parent::__construct();
 $this->view->replace([&#39;__PUBLIC__&#39; => &#39;/static&#39;,]);
}
登入後複製

0X05 参考

https://www.kancloud.cn/thinkphp/thinkphp5-guide/30551

以上是小白筆記之簡單快速建立ThinkPHP5並使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

寶塔部署thinkphp5報錯怎麼辦 寶塔部署thinkphp5報錯怎麼辦 Dec 19, 2022 am 11:04 AM

寶塔部署thinkphp5報錯的解決方法:1、開啟寶塔伺服器,安裝php pathinfo擴充並啟用;2、設定「.access」文件,內容為「RewriteRule ^(.*)$ index.php?s=/$1 [QSA ,PT,L]」;3、在網站管理裡面,啟用thinkphp的偽靜態即可。

thinkphp5 url重寫不行怎麼辦 thinkphp5 url重寫不行怎麼辦 Dec 12, 2022 am 09:31 AM

thinkphp5 url重寫不行的解決方法:1、查看httpd.conf設定檔中是否載入了mod_rewrite.so模組;2、將AllowOverride None中的None改為All;3、修改Apache設定檔.htaccess為「RewriteRule ^ (.*)$ index.php [L,E=PATH_INFO:$1]」保存即可。

怎麼去除thinkphp5標題欄icon 怎麼去除thinkphp5標題欄icon Dec 20, 2022 am 09:24 AM

移除thinkphp5標題列icon的方法:1、找到thinkphp5框架public下的favicon.ico檔案;2、刪除該檔案或選擇另一張圖片命名改為favicon.ico,並取代原favicon.ico檔案即可。

thinkphp5怎麼取得請求過來的網址 thinkphp5怎麼取得請求過來的網址 Dec 20, 2022 am 09:48 AM

thinkphp5取得請求網址的方法:1.使用「\think\Request」類別的「$request = Request::instance();」方法取得目前的url資訊;2、透過自帶的助手函數「$request-> url()」取得包含網域的完整URL位址。

thinkphp5 post不值怎麼辦 thinkphp5 post不值怎麼辦 Dec 06, 2022 am 09:29 AM

thinkphp5 post無法得到值是因為TP5是透過strpos函數在Header的content-type值中找出app/json字串的,其解決辦法就是設定Header的content-type值為app/json即可。

thinkphp5提示控制器不存在怎麼辦 thinkphp5提示控制器不存在怎麼辦 Dec 06, 2022 am 10:43 AM

thinkphp5提示控制器不存在的解決方法:1、檢查對應的控制器裡面的命名空間是否寫對,修改為正確的命名空間;2、打開對應的tp文件,修改類別名稱即可。

ThinkPHP5怎麼查詢昨天的數據 ThinkPHP5怎麼查詢昨天的數據 Dec 05, 2022 am 09:20 AM

ThinkPHP5查詢昨天資料的方法:1、開啟ThinkPHP5相關檔案;2、透過表達式「db('table')->whereTime('c_time', 'yesterday')->select();」查詢昨天的資料即可。

thinkphp5報錯提示怎麼設定 thinkphp5報錯提示怎麼設定 Dec 07, 2022 am 10:31 AM

thinkphp5設定報錯提示的方法:1、進入專案根目錄下的public資料夾,開啟index.php入口檔案;2、檢視偵錯模式開關的註解;3、將「APP_DEBUG」常數的值調整為true即可展示錯誤訊息提示。

See all articles