[TOC]
前言
laravel自带的助手函数使用方便。
虽然laravel自带的助手有很多,
有的时候也需要自定义那么就需要我们来手动创建
比如说接口中常用的方法: 成功返回success(),失败返回failed()
经常会使用所以必要的需要封装起来,放在一个起统一管理,
前言就几句话还得写的语无伦次,笑了
创建助手类
vim /Helpers/function.php
封装
<?php
/**
* @param int $code 返回码
* @param string $message 返回说明
* @param array $data 成功时返回数据
* @param array $errors 失败时返回数据
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
*/
function responseApi(int $code, string $message, array $data = [], array $errors = [])
{
return response(compact('code', 'message', 'data', 'errors'));
}
/**
* @param array $data 返回数据
* @param string $message 说明
* @param int $code 返回码
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
*/
function success(array $data = [], string $message = 'OK', int $code = 0)
{
$code = $code == 0 ? $code : -1;
return responseApi($code, $message, $data, []);
}
/*
function successWithToken(string $token, string $message = '', array $data = [])
{
if ($token && !\Illuminate\Support\Str::startsWith($token, 'Bearer ')) {
$token = 'Bearer ' . $token;
}
return success($data, $message)->header(config('auth.token_key'), $token);
}*/
/**
* @param string $message 说明
* @param int $code 返回码
* @param array $errors 失败时返回数据
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
*/
function failed(string $message = 'Failed', int $code = -1, array $errors = [])
{
$code = $code == 0 ? -1 : $code;
return responseApi($code, $message, [], $errors);
}
/**
* @param string $failMessage 说明
* @param int $statusCode 回状态码
* @param array $errors 错误数据
* @param int $code 返回代码
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
*/
function failedWithStatusCode(string $failMessage = 'Failed', int $statusCode = -1, array $errors = [], int $code = -1)
{
$statusCode = $statusCode > 400 ? $statusCode : 400;
return response(['code' => $code, 'message' => $failMessage, 'data' => [], 'errors' => $errors], $statusCode);
}
/**
* 生成随机字符串(纯字母)
*
* @param int $length
* @return string
*/
function random_str(int $length): string
{
return random_in_str("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", $length);
}
/**
* 生成随机字符串(纯大写字母)
*
* @param integer $length
* @return string
*/
function random_str_up(int $length): string
{
return random_in_str("ABCDEFGHIJKLMNOPQRSTUVWXYZ", $length);
}
/**
* 生成随机字符串(纯数字)
*
* @param int $length
* @return string
*/
function random_number(int $length): string
{
return random_in_str("0123456789", $length);
}
/**
* 在字符串中随机取字符组成长度为length的字符串
*
* @param string $str
* @param integer $length
* @return string
*/
function random_in_str(string $str, int $length): string
{
while (strlen($str) < $length) {
$str .= str_shuffle($str);
}
return substr(str_shuffle($str), mt_rand(0, strlen($str) - $length), $length);
}
自动引用
如果想让项目可以随时用助手那需要在配置下加载
有两种方式。
方法一:
在composer.json中 添加 autoload中增加"files":["app/Helpers/function.php"]
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
},
"files": [
"app/Helpers/function.php"
]
},
最后在项目根目录中更新下composer
composer dumpautoload
方法二:
使用框架自己引导加载
在 bootstrap/app.php
中增加
require __DIR__ . '/../app/Helpers/function.php';
测试
最后在随便一个类中可以测试一下
return success();
评论