martijnthomas/presenter

该包的最新版本(dev-master)没有可用的许可证信息。

装饰Eloquent模型

dev-master 2019-01-04 14:28 UTC

This package is auto-updated.

Last update: 2024-09-05 03:09:27 UTC


README

装饰Eloquent模型。

安装

该包可以在Laravel 5.4或更高版本中使用。

您可以通过composer安装该包

composer require martijnthomas/presenter

在Laravel 5.5中,服务提供程序将自动注册。在框架的较旧版本中,只需在config/app.php文件中添加服务提供程序即可

'providers' => [
    // ...
    MartijnThomas\Presenter\PresenterServiceProvider::class,
];

使用

首先,将MartijnThomas\Presenter\Presentable特性添加到您的Eloquent模型(们)中

namespace App;

use Illuminate\Database\Eloquent\Model;
use MartijnThomas\Presenter\Presentable;

class Product extends Model
{
    use Presentable;

    // ...
}

接下来,您可以创建一个ModelPresenter,这个类必须扩展MartijnThomas\Presenter\PresenterAbstract。在创建的ModelPresenter中,您可以添加表示您的表示者的方法。

您可以通过$this->model访问您原始模型的数据。

namespace App\Presenters;

use MartijnThomas\Presenter\PresenterAbstract;

class ProductPresenter extends PresenterAbstract
{
    /**
     * Format the amount
     *
     * @return string
     */
    public function amount()
    {
        return $this->model->amount / 100;
    }
}

接下来还有一件事要做,您需要在模型中注册该表示者。这很简单

namespace App;

use App\Presenters\ProductPresenter;
use Illuminate\Database\Eloquent\Model;
use MartijnThomas\Presenter\Presentable;

class Product extends Model
{
    use Presentable;

    /**
     * Set the Presenter for the Model
     *
     * @var \App\Presenters\ProductPresenter
     */
    protected $presenter = ProductPresenter::class;

    // ...
}

现在您可以通过以下方式访问您装饰的属性

$product = Product::find(1);

$product->present()->amount;

祝您玩得开心!

开放性问题

包功能尚不完整,仍需完成

  • 添加表示者生成器