tp6.0使用,持续更新

输出config文件-app.php内容

halt(\think\facade\Config::get('app'));

在这里插入图片描述

抛出异常 throw new \think\Exception('异常消息', 10006);
abort(404, '异常消息');//abort助手函数快速抛出一个HTTP异常
>php think make:validate index@User  //生成validate,index模块下叫User
>php think make:controller index@test/Blog --plain  //生成“空”控制器,index/test,叫Blog
>php think make:validate common@api/UserLogValidate //生成验证器,common下api文件,叫UserLogValidate
request()->post(); //助手函数
<?php
declare (strict_types = 1);

namespace app\admin\controller;


use think\captcha\facade\Captcha;

class yanzhengma
{
    /**
     * tp6扩展验证码输出模板
     * 在应用的config目录下面的captcha.php进行配置
     * 文档:https://www.kancloud.cn/manual/thinkphp6_0/1246402
     */
    public function index()
    {
        return Captcha::create();
    }
    public function yanIsTrue(){
        //助手函数不需use
        $value = request()->post();
//        halt($value);
        // 检测输入的验证码是否正确,$value为用户输入的验证码字符串
        if( !captcha_check($value ))
        {
            // 验证失败
        }
    }
}
		try {
            abort(404, '异常消息');
        } catch (\Exception $e) {
            echo 222;
        }
public function index()
    {

        $param = request()->post();
        try {
            validate(UserLogValidata::class)->scene('index')->check($param);
        } catch (ValidateException $e) {
            return json($e->getError());
        }

        Db::startTrans();
        try {
            $a = FaWork::update(['username' => 'thinkphp', 'id' => 5]);
            Db::commit();
        } catch (\Exception $e) {
            Db::rollback();
            echo 222;
        }

**

一:中间件

固定代码:

public function handle($request, \Closure $next)
    {
        return $next($request);
    }

**
1,全局中间件

app/middleware.php定义的中间件

return [
    // Session初始化
     \think\middleware\SessionInit::class
];

在这里插入图片描述

2,应用中间件在这里插入图片描述

<?php
declare (strict_types = 1);

namespace app\admin\middleware;

use think\facade\Cache;
use think\response\Json;
use app\admin\model\FaWork;

class Auth
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    //app/middleware.php应用注册
    public function handle($request, \Closure $next)
    {
        //判断用户身份,以下是中间件里面代码,每行打印输出可查看结果
//        $used = $request->param('used');
//        //判断used存不存在,可以使用全局缓存进行验证,
//        $a = Cache::get($used);
//        if (!$a){
//             abort(404, '身份验证失败');
//        }
//        用sql也可以,需要use,model
//        $sql = fawork::select()->toArray();
//        var_dump($sql);
//        die();
        return $next($request);

    }
}

3.控制器中间件


class Index extends FrontController
{

    protected $middleware = [   \app\admin\middleware\CheckAdmin::class];
    
    public function index()
    {
        echo 'test';
    }
}


点击查看原文连接

二:validate验证器

<?php


namespace app\admin\controller;

use think\facade\Request;
use app\admin\model\fawork;
use app\common\validate\admin\UserLogValidata;
use think\exception\ValidateException;

class Fastworker
{
    /**
     * 验证器--控制器代码
     */
    public function index()
    {
        $param = request()->post();
        try {
            validate(UserLogValidata::class)->scene('index')->check($param);
        } catch (ValidateException $e) {
            return json($e->getError());
        }
      }
<?php
declare (strict_types = 1);

namespace app\common\validate\admin;

use think\Validate;

class UserLogValidata extends Validate
{
   //验证器代码
    protected $rule =   [
        'id'    => ['require','number'],
        'name'  => ['require','max'=>'25'],
        'age'   => ['require','number','between'=>'1,120'],
        'phone' => ['require','number'],
        'email' => 'email',
    ];
    protected $message  =   [
        'name.require' => ['code'=>100,'msg'=>'名称必须'],
        'name.max'     => '名称最多不能超过25个字符',
        'age.number'   => '年龄必须是数字',
        'age.between'  => '年龄只能在1-120之间',
        'email'        => '邮箱格式错误',
        'id.require'   => ['cede'=>100,'msg'=>'id没传值'],
    ];
    protected $scene = [
        'index'  =>  ['name','age'],
        'delete' =>  ['id','phone'],
    ];
}

三:路由

route/app.php ----这里是全局路由
你的模块名/route/app.php ------模块下的路由

<?php

use think\facade\Route;

//路由:ling.test/think
Route::get('think', function () {
    return 'hello,ThinkPHP6!';
});

这里是route/app.php全局路由方式
Route::rule('a','app\\admin\\controller\Fastworker@index','GET|POST');

访问方式:域名/a

这里是-你的模块名/route/app.php   ------模块下的路由
访问方式:域名/模块名/a
Route::rule('a','Fastworker/index','GET|POST');
用于admin/controller/fastadmin控制器里面的方法,后续维护$lu
$lu = [
    'a'=>'index',
    'b'=>'list'
];
foreach ($lu as $key=>$value){
    Route::rule($key,'app\\admin\\controller\Fastworker@'.$value,'GET|POST');
}

四:数据库

输出当前sql

DB::name("cart_info")->where('cart_id', 24)->fetchSql(true)->find();

五:模型

关联模型:一对一关联

方式一:预载入-------model里面

<?php
declare (strict_types = 1);

namespace app\model;

use think\Model;

class Collection extends Model
{
    protected $table = 'wy_collection';
    protected $pk = 'id';

    //关联分类表
    public function category()
    {
    	//hasone 参数:Category表名,'id'Category表的主键,'cate_id'Collection 表的外键
        return $this->hasOne(Category::class,'id','cate_id')->bind(['cre_name'=>'name']);
    }
}

controller:

with方法可以传入数组,表示同时对多个关联模型(支持不同的关联类型)进行预载入查询。

<?php
declare (strict_types = 1);

namespace app\api\controller;
use app\model\Collection as coll;

class Collection
{
    public function saleColl(){
        $list = new coll();
        $User=coll::with('category')->find(1)->toArray();
        halt($User);
        
        //闭包---------------查询
        $users = coll::with(['category'	=> function($query) {
			$query->field('id,user_id,name,email');
		}])->select();
		foreach ($users as $user) {
			echo $user->profile->name;
		}
    }
}

方式二:动态绑定

<?php
declare (strict_types = 1);

namespace app\model;

use think\Model;

class Collection extends Model
{
	public function index(){
		//使用appendRelationAttr,追加显示字段,官网的bindAttr查询显示null值
        $res = Collection::find(1)->appendRelationAttr('test',['cre_name'=>'name'])->toArray();
        halt($res);

    public function test(){
        return $this->hasone(Category::class,'id','cate_id');
    }
}

guzzle:

$toApi = "https://payment.dzxum.com/pay/web";//交易请求地址
$param = [

        ];
$headers = ["Content-Type" => "application/json","X-HTTP-Method-Override" => "post","Content-Length"  => strlen(json_encode($param))];
$client = new Client();
$response = $client->request('post',$toApi,['headers' => $headers,'body'=>json_encode($param)]);
$result = json_decode($response->getBody()->getContents(),true);
var_dump($result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TP6.0中,事件机制是通过事件管理器(Event)来实现的。事件管理器是一个全局单例对象,可以在应用程序的任何地方使用。事件管理器主要负责事件的注册、触发和监听。 以下是TP6.0中事件执行的流程: 1. 注册事件 在应用程序的任何地方,都可以通过事件管理器注册事件。注册事件时,需要指定事件名称和事件处理函数。事件名称可以是任何字符串,事件处理函数可以是闭包、方法或者类静态方法。 例如: ```php // 注册事件 \think\facade\Event::listen('user_login', function ($user) { // 处理用户登录事件 ... }); ``` 2. 触发事件 当应用程序执行到某个位置时,可以通过事件管理器触发事件。触发事件时,需要指定事件名称和事件参数。事件参数可以是任何类型的数据。 例如: ```php // 触发事件 \think\facade\Event::trigger('user_login', $user); ``` 3. 执行事件处理函数 当事件被触发时,事件管理器会自动执行注册的事件处理函数。事件处理函数会按照注册的顺序执行,直到所有的事件处理函数都执行完毕。 例如: ```php // 执行事件处理函数 function handleUserLogin($user) { // 处理用户登录事件 ... } ``` 4. 返回事件结果 事件处理函数可以返回任何类型的数据,这些数据会被收集到一个数组中,作为最终的事件结果返回。事件结果可以被其他的事件处理函数使用。 例如: ```php // 返回事件结果 function handleUserLogin($user) { // 处理用户登录事件 ... return ['user' => $user, 'time' => time()]; } ``` 以上就是TP6.0中事件执行的流程。通过事件机制,我们可以实现应用程序的解耦和扩展,让应用程序更加灵活和可维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值