【汇总】ThinkPHP6入门手册

98 篇文章 2 订阅

阿里云SMS发送短信验证码 - PHP接入手机验证码服务 - ThinkPHP6

https://blog.csdn.net/qq285744011/article/details/127798837

安装

安装Composer

【Linux & MacOS】

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

 【Windows】 
https://getcomposer.org/Composer-Setup.exe

设置Composer使用国内镜像(阿里云)

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/


安装TP框架到文件夹./xx/

composer create-project topthink/think xx

安装TP框架到当前文件夹

composer create-project topthink/think ./


升级又有的TP框架

composer update topthink/framework

框架初始化配置

配置TP框架

cd /path/to/tp6/project/
cp .example.env .env


开启调试模式

修改/.env的APP_DEBUG为TRUE

设置数据库信息

修改/.env的mysql配置

配置Web服务器

在apache、nginx中启用项目

web根目录:/public/


TP6隐藏index.php
【nginx】

location / {
  if (!-e $request_filename){
    rewrite ^(.*)$ /index.php?s=$1 last; break;
  }
}


【apache】

修改/public/.htaccess文件,找到:
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
在index.php后面加一个问号,变成:
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

单应用路由

单应用简单路由使用 - tp6实现简单路由跳转 - 单应用模式
https://blog.csdn.net/qq285744011/article/details/124402231


TP6短网址路由配置(同一个app下,缩短网址)
https://blog.csdn.net/qq285744011/article/details/120331470
中间左右

多应用 - 路由

TP6开启多应用

1.cd /D/www/tp6.com/
2.rm -R app/*    [删掉根目录下的app目录下的所有文件]
3.composer require topthink/think-multi-app
4.php think build {Name-of-APP-1}
5.php think build {Name-of-APP-2}
6.修改/config/app.php的“default_app”为自建的app名称

简单view视图模板输出

先安装tp官方的模板引擎驱动:

composer require topthink/think-view

控制器:

/app/controller/Api.php

<?php
namespace app\controller;

use app\BaseController;
use think\facade\View;


class Api extends BaseController
{
    public function fn2 () {
        View::assign('name','ThinkPHP');
        View::assign([
            'name22'  => 'tp6框架',
            'numbers' => array(
                1, 2, 5, 9, 18
            )
        ]);

        // 没有参数,默认是当前函数名 /view/api/fn2.html
        return view(); 

        // 有参数,就是在同目录下的 /view/api/fn3.html
        // return View::fetch('fn3'); 
    }
}

模板文件:

/view/api/fn2.html

<h2>
    name: {$name}
</h2>
<h4>
    name22: {$name22}
</h4>

<ul>
{foreach $numbers as $k=>$v}
    <li>
        {$k}=>{$v}
    </li>
{/foreach}
</ul>

【注意】

api是控制器,fn2是方法名,全小写

更多模板语法

模板 · ThinkPHP5.1完全开发手册 · 看云5.1版本对底层进行了一些架构调整和优化,采用更加对象化的开发模式,支持容器和Facade,对路由、依赖注入及验证进行了改进。https://www.kancloud.cn/manual/thinkphp5_1/354069

TP6模板嵌套 - layout_on开启 - 模板页面布局 - 公用header

thinkphp6模版布局操作 layout公共模板使用 公共头部 公用导航栏

模板布局 · ThinkPHP5.0完全开发手册 · 看云ThinkPHP V5.0是一个为API开发而设计的高性能框架——是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化。ThinkPHP5是一个全新的里程碑版本,包括路由、日志、异常、模型、数据库、模板引擎和验证等模块都已经重构,不适合原有3.2项目的升级,请慎重考虑商业项目升级,但绝对是新项目的首选(无论是WEB还是API开发),而且最好是忘记3.2版本的思维习惯,重新理解TP5。https://www.kancloud.cn/manual/thinkphp5/125013

数据库连接、操作

设置数据库信息

修改/.env的mysql配置

超全的增删改查操作实例

ThinkPHP6.0数据库操作 

ThinkPHP6.0数据库操作_qq_40861624的博客-CSDN博客_thinkphp6 操作数据库查询数据查询单个数据查询单个数据使用find方法:// table方法必须指定完整的数据表名Db::table('think_user')->where('id', 1)->find();find方法查询结果不存在,返回 null,否则返回结果数组;如果希望在没有找到数据后抛出异常可以使用Db::table('think_user')->where('id', 1)->findOrFail();如果没有查找到数据,则会抛出一个think\db\exception\https://blog.csdn.net/qq_40861624/article/details/119565940

不用model模型实现controller简单查询

<?php
namespace app\controller;

use app\BaseController;
use think\facade\Db;

class Api extends BaseController
{
    public function getxx()
    {
        // 粗略的说:
        // find()返回一个一维数组,
        // select()返回一个对象,
        // select()->toArray()返回一个二维数组
        // 更多 https://www.kancloud.cn/manual/thinkphp6_0/1037533


        // 返回全部行数据
        $res = Db::table('app')->where()->toArray(); // 全部
        $res = Db::table('app')->where(10)->toArray(); // id = 10
        print_r($res);

        // 返回数组或null
        $res = Db::table('app')->where('id', 1)->find();
        print_r($res);
        // Array ( [id] => 1 [name_en] => client [name_zh] => 客户 [amt] => 100 )


        // 查询某一列的值(单行)
        $res = Db::table('app')->where('id', 3)->column('name_zh');
        print_r($res); 
        // Array ( [0] => 头条新闻 )

        
        // 查询某一列的值(多行)
        $res = Db::table('app')->where('id', '<=', 3)->column('name_zh');
        print_r($res); 
        // Array ( [0] => 客户 [1] => 短视频 [2] => 头条新闻 )


        // 指定id字段的值作为索引 (单行)
        $res = Db::table('app')->where('id', 3)->column('name_zh', 'id');
        print_r($res);
        // Array ( [3] => 头条新闻 )
        

        // 指定id字段的值作为索引 (多行)
        $res = Db::table('app')->where('id', '<=', 3)->column('name_zh', 'id');
        print_r($res);
        // Array ( [1] => 客户 [2] => 配送 [3] => 厂家 )

        return '';
    }
}

使用model模型实现快捷数据库操作

C

<?php
namespace app\controller;

use app\BaseController;
use think\facade\Db;

// 数据库有表`store`,我们在tp项目中有对应的model文件/app/model/Store.php
use app\model\Store;

class Api extends BaseController
{
    public function getxx()
    {
        $dbs = Store::findAll()->toArray();
        print_r($dbs);
        die();

        return '';
    }
}

M:/app/model/Store.php

<?php
namespace app\model;

use think\Model;

class Store extends Model
{
    
}

报错、错误集锦

1.

《报错》

Call to undefined method think\Db::table() 【当controller使用use think\Db;时】

或者 Class 'app\controller\Db' not found

《原因》

这是因为你引入了think\Db这个类,但是你没有实例化,所以不能使用Db::table()这种操作,需要引入think\Facade\Db这个类才能使用Db::table(),我现在遇到的问题是我用了Db::table()这个方式,引入了think\Facade\Db,但是系统报错说找不到数据库类型
Call to undefined method think\Db::table() - ThinkPHP框架

《解决办法》

controller引入DB类时,应该使用门面装饰一下 :use think\facade\Db;

2.

TP5.1 门面(Facade)的使用
TP5.1 门面(Facade)的使用 - 简书

3.

No input file specified.    (ThinkPHP5、tp6错误)

解决办法:

1)可能是vendor的包太旧或者缺失,试试TP根目录下进行composer update

2)如果是apache服务器,有可能是因为.htaccess设置不对,要把

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

改为

RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

3)如果是nginx服务器,有可能是因为没有配置当前网站忽略index.php,需要配置一下:

location / {
        try_files $uri $uri/ /index.php$is_args$args;
        autoindex on;
    }

改为

location / {
        try_files $uri $uri/ /index.php$is_args$args;
        autoindex on;
        if (!-e $request_filename){
            rewrite ^(.*)$ /index.php?s=$1 last; break;
        }
    }

4)最后,有可能是因为public目录下多了一个碍事的\public\.user.ini,删掉即可

效果:

进阶知识点

tpl视图布局、公用header 模板布局 · ThinkPHP5.0完全开发手册 · 看云

自定义404页面  404页面 · ThinkPHP5.0完全开发手册 · 看云

'http_exception_template'    =>  [
    // 定义404错误的模板文件地址
    404 =>  \think\facade\App::getRootPath() . '404.html', // 根目录下的404.html
    // 还可以定义其它的HTTP status
    401 =>  \think\facade\App::getRootPath() . '401.html', // 根目录下的401.html
]

// 保存在/config/app.php,要设置show_error_msg为false,另外设置.env的app_debug为false

session自动开启 Session · thinkphp6文档 · 看云

tpl视图常量替换 视图配置:view.php · thinkphp6文档 · 看云

tpl视图资源实现 <link rel="stylesheet" href="__STATIC__/css/xx.css">

启用内置验证码 验证码 · thinkphp6文档 · 看云

模板缓存关闭 ('tpl_cache' => false,)  视图配置:view.php · thinkphp6文档 · 看云

本地log开启 日志配置:log.php · thinkphp6文档 · 看云

多语言实现 多语言 · thinkphp6文档 · 看云

中间件检查登录(排除部分action)中间件(middleware) · thinkphp6文档 · 看云

表单验证助手 验证 · thinkphp6文档 · 看云

聊天室 Workerman Workerman · thinkphp6文档 · 看云

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rudon滨海渔村

花的越多,赚得越多...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值