moeen-basra / photon
Laravel 微型框架,遵循单一职责原则 (SRP)
1.0.0
2023-07-16 23:00 UTC
Requires
- php: ^8.1
- ext-json: *
Requires (Dev)
- orchestra/testbench: ^8.5
- phpunit/phpunit: ^10.2
This package is auto-updated.
Last update: 2024-09-27 00:13:16 UTC
README
Photon 是 Laravel 的轻量级扩展框架,它实现了单一职责原则 (SRP) 设计模式。它受到了 Lucid 框架 的启发。
如何使用
要在 Laravel 项目中使用 Photon,请按照以下步骤操作
- 打开您的终端并执行以下命令
composer require moeen-basra/photon
- 打开
App\Http\Controllers\Controller
类,并用以下代码替换以下代码
use Illuminate\Routing\Controller as BaseController;
替换为
use MoeenBasra\Photon\Http\Controller as BaseController;
- 用以下类扩展
app\Exceptions\Handler
类
MoeenBasra\Photon\Foundation\Exceptions\Handler\Handler
或者,您可以在现有的异常处理器中使用以下 traits
use MoeenBasra\Photon\Concerns\Marshal; use MoeenBasra\Photon\Concerns\ActionRunner;
在 render
方法中,如果请求接受 application\json
,则执行以下作业
$message = $exception->getMessage(); $code = $exception->getCode(); $errors = ($exception instanceof \Illuminate\Validation\ValidationException) ? $exception->errors() : []; if ($request->expectsJson()) { return $this->run(JsonErrorResponseJob::class, [ 'message' => $message, 'errors' => $errors, 'status' => ($code < 100 || $code >= 600) ? 400 : $code, ]); }
- 在
app
文件夹内创建以下目录
|-- app
| |-- Actions
| |-- Features
| |-- Operations
- 以下是控制器示例代码,它提供了功能
namespace App\Http\Controllers\Api\Auth; use App\Features\Api\Auth\RegisterFeature; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use MoeenBasra\Photon\Http\Controller; class AuthController extends Controller { public function __construct() { $this->middleware('auth:api', ['only' => ['me', 'logout']]); } public function register(Request $request): JsonResponse { return $this->serve(RegisterFeature::class, [ 'data' => $request->validated(), ]); } }
- 最后,以下是运行作业的功能示例代码
namespace App\Features\Api\Auth; use App\Operations\Auth\RegisterOperation; use Illuminate\Http\JsonResponse; use Photon\Actions\JsonResponseAction; use MoeenBasra\Photon\Features\Feature; final class RegisterFeature extends Feature { public function __construct( readonly private array $input ){} public function handle(): JsonResponse { $data = $this->run(RegisterOperation::class, [ 'input' => $this->input ]); return $this->run(new JsonResponseAction($data)); } }
许可证
Photon 根据 MIT 许可证 发布。有关详细信息,请参阅 LICENSE 文件。
联系信息
您可以通过以下邮箱联系我 moeen.basra@gamil.com