moeen-basra / photon-lumen by moeen-basra

Lumen Extension for SRP (Single Responsibility Principle)
7
0
1
Package Data
Maintainer Username: moeen-basra
Maintainer Contact: m.basra@live.com (Moeen Basra)
Package Create Date: 2021-09-20
Package Last Update: 2021-09-20
Language: PHP
License: MIT
Last Refreshed: 2024-04-19 15:14:18
Package Statistics
Total Downloads: 7
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 0
Total Watchers: 1
Total Forks: 0
Total Open Issues: 0

Photon

An Extension for the Lumen for SRP (Single Responsibility Principle).

How to use

  1. install the package using the following command
composer require moeen-basra/photon-lumen
  1. Open the file bootstrap/app.php and register Photon\Foundation\Providers\HttpServiceProvider
$app->register(Photon\Foundation\Providers\HttpServiceProvider::class);
  1. Open the file app/Http/Controllers/Controller.php and replace the following code

use Laravel\Lumen\Routing\Controller as BaseController;

with this

use Photon\Foundation\Controller as BaseController;

  1. Open the file app\Exceptions\Handler extend it from \Photon\Foundation\Exceptions\Handler\Handler

  2. Now you have to can create the following directories in the app folder.

|-- app
|  |-- Domains
|  |-- Features
|  |-- Operations

Great now you are good to go.

Here is a sample code for a controller serving the feature.

namespace App\Http\Controllers\Api\Auth;

use Illuminate\Http\JsonResponse;
use Photon\Foundation\Controller;
use App\Features\Api\Auth\RegisterFeature;

class AuthController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth:api', ['only' => 'me', 'logout', 'refresh']);
    }

    /**
     * Register user
     *
     * @return JsonResponse
     */
    public function register(): JsonResponse
    {
        return $this->serve(RegisterFeature::class);
    }
}

Here is sample code for Feature running the jobs and operations

namespace App\Features\Api\Auth;

use Photon\Foundation\Feature;
use App\Operations\Auth\RegisterOperation;
use Photon\Domains\Http\Jobs\JsonResponseJob;
use App\Domains\Auth\Jobs\Register\ValidateRegisterRequestJob;

class RegisterFeature extends Feature
{
    public function handle()
    {
        $input = $this->run(ValidateRegisterRequestJob::class);

        $data = $this->run(RegisterOperation::class, compact('input'));

        return $this->run(new JsonResponseJob($data));
    }
}