moeen-basra/photon

Laravel 微型框架,遵循单一职责原则 (SRP)

1.0.0 2023-07-16 23:00 UTC

This package is auto-updated.

Last update: 2024-09-27 00:13:16 UTC


README

License

Photon 是 Laravel 的轻量级扩展框架,它实现了单一职责原则 (SRP) 设计模式。它受到了 Lucid 框架 的启发。

如何使用

要在 Laravel 项目中使用 Photon,请按照以下步骤操作

  1. 打开您的终端并执行以下命令
composer require moeen-basra/photon
  1. 打开 App\Http\Controllers\Controller 类,并用以下代码替换以下代码
use Illuminate\Routing\Controller as BaseController;

替换为

use MoeenBasra\Photon\Http\Controller as BaseController;
  1. 用以下类扩展 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,
    ]);
}
  1. app 文件夹内创建以下目录
|-- app
|  |-- Actions
|  |-- Features
|  |-- Operations
  1. 以下是控制器示例代码,它提供了功能
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(),
        ]);
    }
}
  1. 最后,以下是运行作业的功能示例代码
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