salipropham/laravel-mvcsp

为 Laravel 5 实现 MVC + Service + Presenter 层

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

This package is not auto-updated.

Last update: 2024-09-21 12:40:17 UTC


README

为 Laravel 5 实现 MVC + Service + Presenter 层

安装

通过 Composer

$ composer require salipropham/laravel-mvcsp

使用方法

服务层

使用 artisan 命令创建新的服务。服务存储在 app/Services 文件夹中。

$ php artisan make:service ServiceName

在控制器中,你可以使用 service 辅助函数将其用作单例。

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

}

展示层

展示层存储在 app/Presenters 文件夹中。

$ php artisan make:presenter PresenterName

展示层将你的数据转换为视图数据,防止在视图中编写逻辑。

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';
    }
}

此外,我们可以通过 presenter 辅助函数或 setOriginalData 函数将数据传递给展示层。

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

要获取转换后的数据,就像喝咖啡一样简单 :)

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

许可证

有关更多信息,请参阅许可证文件