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.