IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> thinkphp6教程笔记 -> 正文阅读

[PHP知识库]thinkphp6教程笔记

安装

在这里插入图片描述
记得加路径 或者(全路劲)php (全路径)composer.phar 命令 的方式运行。避免php版本问题==
在这里插入图片描述
要开启多应用,必须使用 composer require topthink/think-multi-app 安装多应用拓展!!

在这里插入图片描述
这中方式启动的是php的内置服务器 所以如果nginx设置了这个端口号 启动不起来 。
这个仅用于测试 平常还是用nginx的好。而且可以把目录指定为public目录,这样直接 ip:1000 就能访问到了 。但是会不会php使用info的时候 根目录出错?

另外安装composer的时候 不要要从小皮面板安装 坑货······

且需要更改php命令行的版本 或者好像curl -sS https://getcomposer.org/installer | php 这个命令改最后一个参数为安装路径就行?
然后php8.0要安装zip拓展 直接小皮面板会报错 要手动安装 ==都是坑
】不用小皮就不会遇到这些问题!

大坑==

phpstudy 网站那 要关了open_dir 防止跨站攻击的 不然设置public目录为 网站根目录后 就访问不到外面的
如果php_ini中设置了 也关了 或者设置下正常目录
nginx中 和fastcgi.conf里可能也有这个设置

然后 要开启php的
display_errors = On
display_startup_errors = On

默认是不开启的==
这个 即使没开 框架也能报错 可能是因为设置了iniset的 但是框架要正常启动了才有效。否则比如遇到的500错误 框架根本没启动起来 自然也就显示不了报错了

另外 如果是拷贝的文件 权限可能也要设置下 为755

env也要开启debug

然后runtime目录设置为777

基础

错误显示

除了上面的大坑外,一般是设置env
在这里插入图片描述

配置

[DATABASE]
USERNAME =  root
PASSWORD =  123456
use think\facade\Env

function(){
// 获取环境变量 如果不存在则使用默认值root
Env::get('database.username', 'root');
}

![在这里插入图片描述](https://img-blog.csdnimg.cn/ecc6a4984a234f61b60138f916501197.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LqR6Zey5LiN5pS2,size_20,color_FFFFFF,t_70,g_se,x_16

应用目录

在这里插入图片描述

输出

在这里插入图片描述
数组不能直接用return

控制器

两个特殊的控制器

一. 基础控制器

  1. 一般来说,创建控制器后,推荐继承基础控制器来获得更多的方法;
  2. 基础控制器仅仅提供了控制器验证功能,并注入了think\App和think\Request;
  3. 这两个对象后面会有章节详细讲解,下面我们继承并简单使用一下;
    namespace app\controller;
    use app\BaseController;
    class Test extends BaseController
    {
    public function index()
    {
    //返回实际路径
    return $this->app->getBasePath();
    //返回当前方法名
    return $this->request->action();
    }
    }
    二. 空控制器
  4. 在单应用模式下,我们可以给项目定义一个 Error 控制器类,来提醒错误;
    class Error
    {
    public function index()
    {
    return ‘当前控制器不存在!’;
    }
    }

模型

游标的意义

在这里插入图片描述

验证器

使用

例如, 在 TP3 的时候, 可能是这样判断的:

$name = I('name', '');
if (empty($name)) {
    // 抛出异常
}

如果参数比较多的时候, 需要判断的变量越多代码量也随着增加. 如果使用验证器就会好很多.

验证器的官方文档: https://www.kancloud.cn/manual/thinkphp6_0/1037624

直接上代码:

<?php
 
namespace app\api\controller;
 
use think\facade\Validate;
use think\Request;
 
class Auth
{
    public function index(Request $request)
    {
        $input = $request->post();
        $validate = Validate::rule([
                'name|名称'  => 'require|max:25',
                'email|邮箱' => 'require|email'
            ]);
 
        if (!$validate->check($input)) {
            return $validate->getError();
        }
    }
}

在这里插入图片描述

验证的好处

https://www.jb51.net/article/176683.htm

主要是 重复使用 而且直接输出错误信息 避免重复写代码

系统服务

使用系统服务有大大的好处和避免了直接修改类的坏处。从以上分析来看,个人觉得,使用系统服务,可以对一个类进行非入侵式的「配置」,如果哪天一个类的某些设定需要修改,我们不用直接修改这个类,只需要修改服务提供类就好了。对于扩展包来说,系统服务使其可以在扩展中灵活配置程序,达到开箱即用的效果。不过,有个缺点是系统服务类都要在程序初始化是进行实例化,如果一个系统的服务类很多,势必影响程序的性能。

————————————————
原文作者:tsin
转自链接:https://learnku.com/articles/33428
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

使用 thinkphp 开发网站,在没有 thinkphp6 版本出来以前,常规的开发模式都是使用它自带的多应用开发方式来进行项目开发。

多应用开发的一个好处就是开发方便和快速,只需要在thinkphp规定的app目录建立一个目录,比如 admin 目录,然后在其内建立一个 controller 目录就可以开始一个项目的基本开发了。

然而这样开发只适合基于它本身的目录进行开发,如果想要把项目做成一个包来开发和发布,这样的方式明显不行。

而这次,thinkphp6 引入了 Service 的概念,增加了项目转移到包开发的可能性。

Service 的使用需要继承 \think\Service ,同时 Service 默认的 register 和 boot 这两个方法是非必须的,就是说可以不用添加也是可以的。

但是,我们使用 Service 就是为了在项目启动前添加自己的配置和注册一些自己的东西,所以这两个方法对项目开发来说,都利用起来是最好的方法。

register的使用
register 的加载要先于 boot 方法,也同时在系统里属于提前注册一些具体的配置及绑定类,所以在具体的项目开发中,也是推荐只做一些项目的配置。

Service 的引入会根据 thinkphp6 生成的 Services.php 缓存顺序进行加载,所以在使用过程中需要注意当前的 Service 在缓存中属于哪个位置,防止在注册配置时候出现配置加载时出现不可知的问题。

boot 的使用
boot 通常是在 register 注册完成后进行加载,boot 方法里推荐做一些对 register 注册完成后的信息的补充处理。

thinkphp6 由于在 boot 前已做了系统配置的初始化操作,所以在这里处理一些数据库操作也是没有问题的。

Service 的其他方法
loadRoutesFrom :导入路由,传入数据为匿名函数

registerRoutes :功能于 loadRoutesFrom 一样

commands :导入脚本命令,传入数据为数组或者单个脚本

使用 Service 的场景
如果你想要把一个项目独立成一个包进行发布或者为 thinkphp6 提供扩展包。

如果只是单纯的想做一个 app 项目,Service 估计不太适合你。

最后,Service 的具体实践有没有什么好的项目推荐啊,那当然有的,这里隆重推荐一个完全使用 Service 开发的项目:

laket-admin: https://github.com/deatil/laket-admin

laket-admin 使用 thinkphp6 的 Service 模式加单应用开发而成,避开了 thinkphp6 多应用下 url 出现的一些问题,对用户端的 url 更加友好。

laket-admin项目的截图

?著作权归作者所有:来自51CTO博客作者爱看雨的猫的原创作品,请联系作者获取转载授权,否则将追究法律责任
thinkphp6的Service的简明使用介绍
https://blog.51cto.com/u_11949903/2671735

为什么halt

在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:20:14  更:2022-04-18 17:21:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 15:22:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码