yaangvu/laravel-base
Composer 安装命令:
composer require yaangvu/laravel-base
包简介
Laravel API Resource Base
README 文档
README
This base will help to create simple API (CRUD) for 1 specific entity
Install
composer require yaangvu/laravel-base
For Laravel
Publish configuration file and Base Classes
php artisan vendor:publish --provider="YaangVu\LaravelBase\Providers\BaseServiceProvider"
For lumen
cp vendor/yaangvu/laravel-base/src/config/laravel-base.php config/laravel-base.php mkdir -p app/Base cp vendor/yaangvu/laravel-base/src/Base/Publish/Controller.php app/Base/Controller.php cp vendor/yaangvu/laravel-base/src/Base/Publish/Service.php app/Base/Service.php
Generator Command
If you want to use Generator Command, Add the following class to the providers array in config/app.php:
YaangVu\LaravelBase\Provider\GeneratorServiceProvider::class,
If you want to manually load it only in non-production environments, instead you can add this to
your AppServiceProvider with the register() method:
public function register() { if ($this->app->isLocal()) { $this->app->register(\YaangVu\LaravelBase\Provider\GeneratorServiceProvider::class); } // ... }
Initial API resource
Generate code
php artisan yaangvu:base Post <option>
Option:
- -S: generate code with default Swagger annotation
- -i: Auto inject Service in Controller methods
Directory structure of generated code
├── app
│ ├── Domains
│ │ └── Post
│ │ ├── Controllers
│ │ │ └── PostController.php
│ │ ├── Models
│ │ │ └── Post.php
│ │ └── Services
│ │ └── PostService.php
Route
Route::base('/posts', \App\Domains\Post\Controllers\PostController::class);
Usage
Dynamic query parameters
Operators supported
$operators
= [
'__gt' => OperatorConstant::GT, // Greater than
'__ge' => OperatorConstant::GE, // Greater than or equal
'__lt' => OperatorConstant::LT, // Less than
'__le' => OperatorConstant::LE, // Less than or equal
'__~' => OperatorConstant::LIKE // Like
];
To query, you can add more params with format:
{param-name}{operator} = {value}
Example:
username = admin---->usernameequaladminname__~ = super---->namelike%super%age__gt = 18---->agegather than18
Full request example
Request to query user with username=admin and name LIKE %super% and age > 18
curl --location --request GET 'http://localhost:8000/api/v1/users?username=admin&name__~=super&age__gt=18'
Validate before Add an entity
Support full Laravel validation: Validation
class UserService extends BaseService
{
public function storeRequestValidate(object $request, array $rules = []): bool|array
{
$rules = [
'username' => 'required|max:255|unique:users',
];
return parent::storeRequestValidate($request, $rules);
}
}
Validate before Update an entity
Support full Laravel validation: Validation
class UserService extends BaseService
{
public function updateRequestValidate(int|string $id, object $request, array $rules = []): bool|array
{
$rules = [
'username' => 'required|max:255|unique:users,id',
];
return parent::updateRequestValidate($id, $request, $rules);
}
}
Service Observe
It supports these observe function:
function postAdd()function postUpdate()function postDelete()function postGet()function postGetAll()
Cache data
If you want to cache data when create update select, implement ShouldCache interface
class UserService extends BaseService implements \YaangVu\LaravelBase\Base\Contract\ShouldCache {}
yaangvu/laravel-base 适用场景与选型建议
yaangvu/laravel-base 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11.55k 次下载、GitHub Stars 达 7, 最近一次更新时间为 2021 年 04 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「generator」 「api」 「base」 「laravel」 「swagger」 「lumen」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 yaangvu/laravel-base 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 yaangvu/laravel-base 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 yaangvu/laravel-base 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Memio's PrettyPrinter, used to generate PHP code from given Model
yii2 simialbi base
Encode integer IDs using a preset or customized symbol set
A PSR-7 compatible library for making CRUD API endpoints
Yii2 js base class
Shareable classes and traits useful for any PHP project
统计信息
- 总下载量: 11.55k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 8
- 点击次数: 6
- 依赖项目数: 5
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-18