yaro / presenter
Laravel 5 的 Eloquent 模型或数组展示器
0.3.0
2021-02-22 10:48 UTC
Requires
- illuminate/support: 5.*|6.*|7.*|8.*
README
安装
composer require yaro/presenter
用法
创建一个展示器类,并从 Yaro\Presenter\AbstractPresenter
扩展它。并指定展示器应该使用的模型中的 $arrayable
键。
namespace App\Presenters; use Yaro\Presenter\AbstractPresenter; class UserPresenter extends AbstractPresenter { protected $arrayable = [ 'name', 'profession' ]; }
此外,您可以添加获取特定值的方法。
protected $arrayable = [ 'name', 'profession', 'random_number', // <- a virtual key, that model doesnt contain ]; // just studly case your key and surround it with 'get' and 'Present'. public function getRandomNumberPresent() { return rand(11,22); }
在您的模型中包含特性 Yaro\Presenter\PresenterTrait
。并指定展示器类。
use Yaro\Presenter\PresenterTrait; class User { use PresenterTrait; // ... protected $presenter = \App\Presenters\UserPresenter::class; }
或者,如果您不喜欢受保护的属性,或者需要一些额外的逻辑,可以重写 getPresenterClass
方法。
class User { use PresenterTrait; // ... public function getPresenterClass() { if ($this->isBlocked()) { return \App\Presenters\BlockedUserPresenter::class; } return \App\Presenters\UserPresenter::class; } }
然后将其发送到输出。
$user = User::first(); return response()->json(compact('user'));
{ "name": "Davy Jones", "profession": "pirate", "random_number": 13 }
许可证
MIT 许可证(MIT)。请参阅 LICENSE 获取更多信息。