阿里云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.htmlreturn 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 = 10print_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 status401 =>  \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文档 · 看云

【汇总】ThinkPHP6入门手册相关推荐

  1. 以太坊入门手册(附各类工具链接)

    本文将围绕以太坊,介绍相关基础知识,提供各种查询工具.社群链接,帮助大家更加深入学习以及在以太坊上进行开发. 从 2008 年诞生以来,区块链走过了十多年的风雨路,繁衍出比特币.以太坊.EOS等诸多公 ...

  2. AI产品经理入门手册(下)

    近两年来AI产业已然成为新的焦点和风口,各互联网巨头都在布局人工智能,不少互联网产品经理也开始考虑转型AI产品经理,本文作者也同样在转型中.本篇文章是通过一段时间的学习归纳总结整理而成,力图通过这篇文 ...

  3. rocketmq 顺序消费_必须先理解的RocketMQ入门手册,才能再次深入解读

    推荐阅读一下下 2020年后想跳槽?MQ.ZK.Nginx.Kafk等分布式技术你都掌握了? 阿里架构师推荐学习的<RabbitMQ实战指南>,渣渣的你都看过吗? RocketMQ入门手册 ...

  4. 推荐算法炼丹笔记:CTR点击率预估系列入门手册

    ​CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...

  5. React 入门手册

    大家好,我是若川.推荐这篇可收藏的React入门手册.也推荐之前一篇类似的文章<如何使用 React 和 React Hooks 创建一个天气应用>. 点击下方卡片关注我.加个星标 Rea ...

  6. rocketmq 订阅组_必须先理解的RocketMQ入门手册,才能再次深入解读

    推荐阅读一下下 2020年后想跳槽?MQ.ZK.Nginx.Kafk等分布式技术你都掌握了? 阿里架构师推荐学习的<RabbitMQ实战指南>,渣渣的你都看过吗? RocketMQ入门手册 ...

  7. Tablestore入门手册-UpdateRow接口详解

    表格存储Tablestore入门手册系列主要介绍表格存储的各个功能接口和适用场景,帮助客户了解和使用表格存储Tablestore.本文对表格存储Tablestore的UpdateRow接口进行介绍,包 ...

  8. 林锐 高质量c语言编程下载,新年献礼:Go语言深度入门手册

    (文末的阅读原文,效果最佳!) 作者:李佶澳 微信:lijiaocn Go 语言深度入门手册,帮你更好的理解 Go 语言,写出更高效.更规范.更不易出错的代码. Go 在 2012 年发布 1.0 版 ...

  9. 支付宝前端推出《Web前端开发入门手册》

    web前端教程 用大白话,来讲编程 近日,支付宝前端团队写的<Web前端开发入门手册>对外公开了,原本是用于内部培训使用,现在对外公开了. 这本手册是初学者的福音,它的受众群体是前端小白, ...

最新文章

  1. 数据结构(队列实现篇)
  2. win7设置java环境变量_win7下JAVA环境变量配置方法
  3. Linux中which命令作用,【每天一个Linux命令】12. Linux中which命令的用法
  4. WebRTC端点检测使用中遇到的部分问题汇总
  5. 一文读懂CoIP实验:原理、实验流程、遇到的问题
  6. Mybatis注解开发(一对一)
  7. [原创] 域模式下的ASP.NET 发邮件代码
  8. Hadoop学习笔记—8.Combiner与自定义Combiner
  9. 计算机协会丨让技能得到提升,让思维受到启迪
  10. 思科警告: Nexus 交换机受严重缺陷影响
  11. [转载] python判断是否为json_Python判断变量是否为Json格式的字符串示例
  12. Python沪深300成分股价值分析
  13. android 酷我音乐接口,酷我音乐 各种付费歌曲,音质包括ape、flac无损音乐api接口...
  14. vulnhub--Funbox: Scriptkiddie
  15. 管道(Pipeline)
  16. java linest_不要再纠结in和exists——JAVA伪代码直白分析二者时间复杂度
  17. 蚂蚁开放联盟链合约开发入门
  18. 防止表单重复提交的实现方法!
  19. 【JavaEE】经典JAVA EE企业应用实战-读书笔记2
  20. 高中计算机八字标语,高中励志八字标语40句

热门文章

  1. java-php-net-python-基于的相册软件的设计与实现计算机毕业设计程序
  2. 软考—信息项目管理师(信息化和信息系统二)
  3. Ubuntu18.04下 LOAM_Velodyne 的编译安装(PCL为1.8.1)
  4. linux下postgresql创表添加数据
  5. 函数防抖(debounce)和节流(throttle)在H5编辑器项目中的应用
  6. java 微信给好友发信息吗,不在线,好友发给我的微信消息,会不会丢?
  7. 雨量传感器开发:MLX75310光照检测与雨滴感应RLS
  8. 汇智网node学习笔记
  9. SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
  10. 【Ribbit研习】下载安装