langleyfoxall / helpers-laravel
一组实用的类,帮助简化Laravel应用程序的开发
Requires
- php: ^7.3||^8.0
- illuminate/database: >=5.0
- illuminate/http: >=5.0
- illuminate/support: >=5.0
Requires (Dev)
- orchestra/testbench: ^5.17.1
This package is auto-updated.
Last update: 2024-08-31 08:38:08 UTC
README
一个包含特定于Laravel的辅助类的存储库,以帮助标准化工作。API辅助工具、转换器等。
安装
可以使用Composer轻松安装Langley Foxall Helpers Laravel包。只需从项目的根目录运行以下命令。
composer require langleyfoxall/helpers-laravel
如果您以前从未使用过Composer依赖管理器,请访问Composer网站获取有关如何开始的更多信息。
辅助工具
模型
模型辅助工具 提供了一些有用的函数,用于处理 Eloquent模型。
方法
所有方法都可以静态调用。
all
获取所有模型的 集合。
示例用法
$collection_of_models = Models::all()
utf8EncodeModel
将单个模型的属性值编码为 UTF-8,并返回模型。
示例用法
$encoded_user = Models::utf8EncodeModels($user)
utf8EncodeModels
将多个模型的属性值编码为 UTF-8,并返回模型集合。
示例用法
$collection_of_encoded_users = Models::utf8EncodeModels($users)
getColumns
获取给定模型的数据库列的 数组。
示例用法
$columns = Models::getColumns($user)
getNextId
获取模型的下一个 自增ID。
示例用法
$next_id = Models::getNextId($user)
areRelated
检查一定数量的模型是否相互关联。
示例用法
如果传递了 模型 的实例,则 areRelated
将尝试从模型中获取 复数 和 单数 方法,然后可以由序列中的前一个模型使用这些方法以确认它们是否相关。如果传递了一个数组,则期望第一个元素是一个 模型 的实例,第二个是一个表示关系方法的字符串
还提供了一个 NotRelatedException
,可以在应用程序中使用。
$related = Models::areRelated($user, $post, [$comment, 'comments'])
randomByWeightedValue
接受一个 Model
集合并根据加权列返回一个。它还可以接受一个最大容量值以模拟更高的几率。
请注意,当传递一个 maxCap
时,如果模型列表中的所有项都没有命中,则应传递一个期望的返回值。
示例用法
$prizes = Prizes::all();
$selectedPrize = Models::randomByWeightedValue($models, 'chance');
//returns a prize as if the 'chance' column related to {$chance}/10,000,000 - if none are hit it will return null.
$selectedPrize = Models::randomByWeightedValue('App\Models\Prize', 'chance', 10000000, null);
IsRelatedTo
《IsRelatedTo 辅助器》是一个特性,允许快速轻松地访问areRelated
方法,该方法位于Models 辅助器中。
方法
isRelatedTo
检查单个模型是否与父模型相关。
示例用法
class User extends Model {
use IsRelatedTo;
}
$related = $user->isRelatedTo($post)
枚举
《Enum 辅助器》是一个特性,提供了处理枚举类时的辅助函数。
方法
all
返回枚举类的所有值的数组。
示例用法
class UserType
{
use \LangleyFoxall\Helpers\Traits\Enum;
const ADMIN = 'admin';
const USER = 'user';
}
class User extends Eloquent
{
public function getValidTypes()
{
return UserType::all();
}
}
valid
检查提供的值是否是枚举类的有效值。
示例用法
class UserType
{
use \LangleyFoxall\Helpers\Traits\Enum;
const ADMIN = 'admin';
const USER = 'user';
}
class User extends Eloquent
{
public function setTypeAttribute(string $type)
{
if (!UserType::valid($type)) {
throw new InvalidUserType;
}
$this->type = $type;
}
}
ApiResponse
《ApiResponse 辅助器》标准化API响应。始终包含相同的字段
《ApiResponse 辅助器》还实现了ArrayAccess,可以用来轻松转换data
。示例用法可以在这里找到。
在构建响应并在Controller中返回它之前,您必须调用json
。
方法
success
创建一个成功的响应实例。
示例用法
没有任何参数是必需的。
$api_response = ApiResponse::success($data, $meta, $status)
error
创建一个不成功的响应实例。
示例用法
没有任何参数是必需的。
$api_response = ApiResponse::error($errors, $status)
data
设置要返回的数据。
示例用法
没有任何参数是必需的。
$api_response->data($data)
meta
设置要返回的元数据。
示例用法
没有任何参数是必需的。
$api_response->meta($meta)
status
设置响应状态码。
示例用法
$api_response->status($status)
json
获取JSON响应对象
示例用法
$json_response = $api_response->json()
cache
将当前的ApiResponse
数据缓存起来以供后续请求使用。默认情况下,如果缓存中已经存在数据,则不会覆盖数据。使用forceOverwrite
可以覆盖数据,默认为false。cache
必须在设置data
之后调用。
示例用法
lifespan
接受以分钟为单位的整数值或Carbon时间,表示缓存将在何时清除。cache
必须是一个实例化的ResponseCache。
ApiResponse::success($data)->cache(1, $cache)->json();
响应
当API端点由于某种原因使用与Web URI相同的Controller方法时,应仅使用《Response 辅助器》。此辅助器将检查请求是否期望JSON,并返回正确的响应。
方法
以下所有方法都不能静态调用。实例化新的Response实例时需要一个Request对象。
success
创建一个成功的响应。
示例用法
没有任何参数是必需的。
$response = (new Response($request)->success($message, $data, $meta, $status)
error
创建一个不成功的响应。
示例用法
没有任何参数是必需的。
$response = (new Response($request)->success($message, $status)
type
设置响应类型。虽然错误和成功不是严格检查的,但如果不是错误,则默认为成功。
示例用法
$response = (new Response($request)->success($type)
message
设置在发生错误或触发back时显示的消息。
示例用法
$response = (new Response($request)->message($message)
data
将返回的数据设置为一个成功的ApiResponse。
示例用法
没有任何参数是必需的。
$response = (new Response($request)->data($data)
meta
将返回的元数据设置为一个成功的ApiResponse。
示例用法
没有任何参数是必需的。
$response = (new Response($request)->meta($meta)
status
将返回的状态设置为一个ApiResponse。如果在其之前调用success
或error
,则会重写。
示例用法
$response = (new Response($request)->status($status)
redirect
设置要调用的而不是返回的redirect URI。
示例用法
没有任何参数是必需的。
$response = (new Response($request)->redirect($uri)
end
返回预期的响应。
示例用法
$expected_response = (new Response($request)->end()
ResponseCache
ResponseCache
助手简化了根据不同的请求参数和用户账户缓存API响应。根据请求路由、方法、参数和用户生成独特的缓存。
方法
以下所有方法都不能静态调用。
hasData
返回当前缓存是否有数据。
示例用法
if($cache->hasData()){...
getData
返回当前缓存中的数据,如果为空则返回null
。
示例用法
$data = $cache->getData();
cacheData
将数据保存到缓存中。任何当前缓存中的数据都将被覆盖/
示例用法
data
可以是任何可序列化的数据,lifespan
可以是分钟,也可以是一个Integer或一个Carbon时间,表示缓存将在该时间过期。
$cache->cacheData(["Hello" => "World"], Carbon:now()->addSeconds(4404));
getKey
返回基于请求路径、方法、参数和用户生成的缓存唯一键。
示例用法
$key = $cache->getKey();
clear
清除给定缓存的缓存数据。
示例用法
$cache->clear();
与ApiResponse一起使用
可以使用cache
函数自动从ApiResponse
创建缓存。如果缓存中不包含数据,它将只缓存新数据。请参阅此处文档。
示例用法
$cache = new ResponseCache($request, false);
if($cache->hasData()){
$data = $cache->getData();
}else{
$data = computationallyExpensiveFunction();
}
return ApiResponse::success($data)->cache(1, $cache)->json();
IdentifiedByUUID
IdentifiedByUUID
特质允许您轻松使用V4 UUID而不是递增主键。
示例用法
更改您的迁移以允许使用UUID。
public function up() { Schema::create('demos', function (Blueprint $table) { $table->uuid('id')->primary(); $table->timestamps(); }); }
使用特质。
class Demo extends Model { use IdentifiedByUUID; }
现在当模型保存时,它将自动填充一个V4 UUID。