salipropham/laravel-mvcsp

Implement MVC + Service + Presenter layer to Laravel 5

v0.1.1 2019-03-12 03:12 UTC

This package is not auto-updated.

Last update: 2024-03-23 10:14:06 UTC


README

Implement MVC + Service + Presenter layer to Laravel 5

Installation

Via Composer

$ composer require salipropham/laravel-mvcsp

Usage

Service Layer

Create new service via artisan command. The service stored in app/Services folder.

$ php artisan make:service ServiceName

In controller, you can use service helper function to use it like a singleton.

public function index(Request $request)
{
    $srvDummy = service(DummyService::class);    
    if($request->get('key')){
        $srvDummy->loveU();
    } else {
        $srvDummy->willLoveU;
    }
    
    // something or nothing...

}

Presenter Layer

The Presenter stored in app/Presenters folder.

$ php artisan make:presenter PresenterName

Presenter will transform your data into view data, prevent writing logic on view.

public function index(Request $request)
{

    // something or nothing...
    
    $prsFoo = presenter(FooPresenter::class);

    return view('example', $prsFoo);
}

FooPresenter.php

class LovePresenter extends Presenter
{

    /**
     * Keep or not original data that has passed on init
     * @var bool
     */
    protected $keepOrigData = true;
 
    public function transform()
    {
        // logic here and only here
        
        $this->mydata = 'transformed data';
    }
}

In addition, we can pass data to Presenter via presenter helper or setOriginalData function.

presenter($name, $original_data)
//or
$prsFoo->setOriginalData($original_data)

To get transformed data, simple like drinking a coffee cup :)

$data = $prsFoo->parse();
// or a static method
$data = FooPresenter::parse();

License

Please see the license file for more information.