touhidurabir / laravel-presenter
一个帮助组织主要用于视图展示目的的方法的包。
1.0.1
2021-11-17 10:43 UTC
Requires
- php: >=7.3
- touhidurabir/laravel-stub-generator: ^1.0
Requires (Dev)
- orchestra/testbench: ^6.21
- phpunit/phpunit: ^9.5
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;
贡献
欢迎提交拉取请求。对于主要更改,请先打开一个问题来讨论您想进行的更改。
请确保根据需要更新测试。