touhidurabir/laravel-presenter

一个帮助组织主要用于视图展示目的的方法的包。

1.0.1 2021-11-17 10:43 UTC

This package is auto-updated.

Last update: 2024-09-17 17:00:45 UTC


README

一个帮助组织主要用于视图展示目的的方法的包。

安装

使用composer安装包

composer require touhidurabir/laravel-presenter

发布配置文件

php artisan vendor:publish --provider="Touhidurabir\Presenter\PresenterServiceProvider" --tag=config

配置

检查发布的配置文件以获取配置选项的详细信息。

使用方法

第一步是生成一个展示类。为了简化这个过程,此包提供了一个帮助生成展示类的命令。要使用命令生成展示类,请按照以下步骤操作:

php artisan make:presenter PresenterClassName

例如:

php artisan make:presenter UserPresenter

将在 App\Presenters 命名空间路径下生成一个 UserPresenter

它将包含以下内容:

namespace Touhidurabir\Presenter\Tests\App\Presenters;

use Touhidurabir\Presenter\BasePresenter;

class UserPresenter extends BasePresenter {

}

现在,为了与 User 模型类结合使用,将 HasPresenter 特性降级并定义属性 $presenter 如下:

use Illuminate\Database\Eloquent\Model;
use Touhidurabir\Presenter\HasPresenter;
use Touhidurabir\Presenter\Tests\App\Presenters\UserPresenter;

class User extends Model {

    use HasPresenter;

    protected $presenter = UserPresenter::class;
}

现在要定义我们展示类中的方法,请按照以下步骤操作:

class UserPresenter extends BasePresenter {

    public function someMethod() {

        return $this->model->some_presentable_data;
    }
}

现在,任何在 UserPresenter 类中定义的 public 方法都可以按以下方式访问:

$user->present()->someMethod

也可以不定义 $presenter 属性,而使用展示类进行模型。在这种情况下,它将通过模型名称和默认存储命名空间尝试解析展示类,该命名空间在 config 文件中定义。

例如,默认情况下,如果未在 User 模型中设置 $presenter 属性,它将尝试在 App\Presenters 位置查找名为 UserPresenter 的类,用于 User 模型。如果找到,则将其用于 User 模型展示。如果没有找到,则抛出异常。

还可以在运行时设置/更新展示类。为此,需要使用在 HasPresenter 特性中定义的 setPresenter 方法,如下所示:

$user->setPresenter(UserPresenter::class);
$user->present()->anyMethodDefinedInPresenter;

贡献

欢迎提交拉取请求。对于主要更改,请先打开一个问题来讨论您想进行的更改。

请确保根据需要更新测试。

许可证

MIT