输出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);