New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

salipropham/laravel-mvcsp

Implement MVC + Service + Presenter layer to Laravel 5
1,914 1
Install
composer require salipropham/laravel-mvcsp
Latest Version:v0.1.1
Laravel:5
License:AML
Last Updated:Mar 12, 2019
Links: GitHub  ·  Packagist
Maintainer: salipropham

Laravel-MVCSP

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.

Related Packages

zendaemon/service-layer

Service layer generator for laravel applications

3,518 1
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

648,266,899 9,701
laravel/framework

The Laravel Framework.

604,216,237 34,982
laravel/tinker

Powerful REPL for the Laravel framework.

512,508,631 7,443

Version History

Version Released Laravel License
v0.1.1 ~5 AML
v0.1.0 ~5 AML