alicfeng / laravel-helper
关于 Laravel Helper
v1.3.4
2020-07-03 09:25 UTC
Requires
- php: ^7.0
- ext-curl: *
- ext-gd: *
- ext-json: *
- ext-openssl: *
- spatie/array-to-xml: ^2.8
Requires (Dev)
- composer/composer: ^1.8
- orchestra/testbench: ^3.5
- phpunit/phpunit: @stable
README
Laravel-helper 组件是一个简单的包,旨在帮助您生成代码规范和强大的架构。
入门
安装
composer require alicfeng/laravel-helper:v1.3.1 -vvv
配置
app.php
[ 'providers' => [ AlicFeng\Helper\ServiceProvider\HelperServiceProvider::class, ] ];
public vendor
php artisan vendor:publish --provider="AlicFeng\Helper\ServiceProvider\HelperServiceProvider"
配置文件
config/helper.php
// about package setting return [ 'package' => [ /*Response Package Structure*/ 'structure' => [ 'code' => 'code', 'message' => 'message', 'data' => 'data', ], // Default Header simple:Content-Type => application/json 'header' => [ ], /*Package encrypt Setting*/ 'crypt' => [ 'instance' => \AlicFeng\Helper\Crypt\HelperCryptService::class, 'method' => 'aes-128-ecb', 'password' => '1234qwer', ], /*Package format (json | xml)*/ 'format' => 'json', /*Log*/ 'log' => [ 'log' => true, 'level' => 'notice', ], ], // about log setting 'log' => [ 'extra_field' => [ 'runtime_file' => true, 'memory_message' => false, 'web_message' => false, 'process_id' => false, ], ], // translate 'translate' => [ 'model' => true, 'instance' => \AlicFeng\Helper\Translate\Translation::class, ], // runtime model 'runtime' => [ 'trace' => [ 'request' => true, 'response' => false, 'filter_uri' => [ ] ], ], // debug model setting 'debug' => false ];
Helper 模型
ResponseHelper
它有什么功能?
- 根据 RESTful 生成统一结构包
- 通过中间件加密响应包
用法
-
根据 RESTful 生成统一结构包
例如关于
Controller - Service
使用
return $this->result($codeEnum, $result);
开发者只关心服务处理的結果,而响应结构由组件构建。
class HelloService extends HelperServiceAbstract { public function __construct() { parent::__construct(); } public function package(string $name = '') { $codeEnum = [1000, 'success']; // this should define in app/Enum/CodeEnum.php $result = [ 'name' => $name, 'age' => 24, ]; // return $this->rspHelper->transform(DemoTransform::class)->result($codeEnum, $result); return $this->rspHelper->result($codeEnum, $result); } }
请求结果
➜ curl -s "https://dev.samego.com/api/package?name=alicfeng" | jq . { "code": 1000, "message": "success", "data": { "name": "alicfeng", "age": 24 } }
-
通过中间件加密响应包
首先在 Kernel 中注册中间件
然后在路由文件或 __construct 中添加中间件
app/Http/Kernel.php
protected $routeMiddleware = [ 'package.encrypt'=>\AlicFeng\Helper\Middleware\EncryptMiddleware::class ];
routes/api.php
Route::middleware('package.encrypt')->get('/package', 'HelloController@package');
请求结果
➜ demo curl -s "http://127.0.0.1:8181/api/package?name=alicfeng" 1aGGUAPDs0x80Qqnacwv1LQOd5crQrJZRJ6-7AbmrYb2EqvhUZ4flXBe6DKbKGGYbboU--qwz64epLapZc9nxSCsn4XIW-QG8taK-g_bteE
组件提供通过 Web 解密密文的函数!!!看~
现在打开你的浏览器输入
{$host/helper/decrypt}
然后输入。您可以通过配置来指定加密和解密的实例,
config/helper.php
中的package.crypt.instance
必须实现
HelperCryptServiceInterface
CurlHelper
/** *@return \Symfony\Component\HttpFoundation\Response */ $response = CurlHelper::get(...); $response = CurlHelper::post(...); $response = CurlHelper::put(...); $response = CurlHelper::delete(...);
LogHelper
显示日志内容格式
[2019-08-20 23:36:37.310839] local.INFO: push cash {"user_id":9510,"cash":"52.00"}
{"memory_usage":"14 MB","memory_peak_usage":"14 MB","runtime_file":{"file":"/Users/alicfeng/tutorial/github/tmp/demo/app/Console/Commands/AlicFeng.php:69","function":"App\\Console\\Commands\\AlicFeng->handle"}}
[2019-08-20 23:36:37.311712] local.DEBUG: source data come from cache
{"memory_usage":"14 MB","memory_peak_usage":"14 MB","runtime_file":{"file":"/Users/alicfeng/tutorial/github/tmp/demo/app/Console/Commands/AlicFeng.php:71","function":"App\\Console\\Commands\\AlicFeng->handle"}}
[2019-08-20 23:36:37.311834] local.NOTICE: sync article successful {"user_id":9510}
{"memory_usage":"14 MB","memory_peak_usage":"14 MB","runtime_file":{"file":"/Users/alicfeng/tutorial/github/tmp/demo/app/Console/Commands/AlicFeng.php:73","function":"App\\Console\\Commands\\AlicFeng->handle"}}
[2019-08-20 23:36:37.311935] local.WARNING: logout failed {"user_id":8888}
{"memory_usage":"14 MB","memory_peak_usage":"14 MB","runtime_file":{"file":"/Users/alicfeng/tutorial/github/tmp/demo/app/Console/Commands/AlicFeng.php:75","function":"App\\Console\\Commands\\AlicFeng->handle"}}
配置
config/logging.php
'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', 'permission' => 0777, 'tap' => [\AlicFeng\Helper\Component\Log\LogEnhancer::class], 'days' => 7, 'formatter' => \Monolog\Formatter\LineFormatter::class, 'formatter_with' => [ 'dateFormat' => 'Y-m-d H:i:s.u', 'allowInlineLineBreaks' => true, 'ignoreEmptyContextAndExtra' => true, 'format' => "[%datetime%] %channel%.%level_name%: %message% %context%\n%extra%\n" ] ]
用法
Log::info('push cash', ['user_id' => 9510, 'cash' => '52.00']); Log::debug('source data come from cache'); Log::notice('sync article successful', ['user_id' => 9510]); Log::warning('logout failed', ['user_id' => 8888]); // or LogHelper::info('push cash', ['user_id' => 9510, 'cash' => '52.00']); LogHelper::debug('source data come from cache'); LogHelper::notice('sync article successful', ['user_id' => 9510]); LogHelper::warning('logout failed', ['user_id' => 8888]);
DateTimeHelper
API 函数
-
msectime
DateTimeHelper::msectime()
目录框架
通过命令初始化目录项目框架
php artisan samego:framework
# make folder list
lib
sbin
etc
app/Constant
app/Enum
app/Helper
app/Service
app/Repository
app/Http/Transform
app/Facades
app/Contracts