padosoft / laravel-presenter
Laravel的展示者设计模式实现。
1.5.0
2024-05-20 12:31 UTC
Requires
- php: >=7.4
- illuminate/database: ~5.6|^v6.0|^v7.0|^v8.0|^v9.0|^v10.0|^v11.0
- illuminate/support: ~5.6|^v6.0|^v7.0|^v8.0|^v9.0|^v10.0|^v11.0
Requires (Dev)
- phpunit/phpunit: ~5.2|^6.5.14|^7.5.20|^8.5.26|^9.5.20|^10
- roave/security-advisories: dev-latest
README
展示者是一种Laravel设计模式,用于将模型中的数据修改为视图中的数据。
它使数据显示方式更容易被人理解。
目录
##需求
- "php" : ">=5.6.0",
- "illuminate/support": "~5.0|^6.0|^7.0|^8.0|^9.0",
- "illuminate/database": "~5.0|^6.0|^7.0|^8.0|^9.0"
安装
Laravel 5.x
执行以下命令以获取该包的最新版本:
composer require padosoft/laravel-presenter
用法
第一步是将您的展示者存储在某个地方——任何地方。这些将是非常简单的对象,除了按需格式化数据外,不做任何事情。
请注意,您的展示者类必须扩展Laracodes\Presenter\Presenter
namespace App\Presenters; use Laracodes\Presenter\Presenter; class UserPresenter extends Presenter { public function fullName() { return $this->model->first_name . ' ' . $this->model->last_name; } public function accountAge() { return $this->model->created_at->diffForHumans(); } ... }
接下来,在您的模型中引入Laracodes\Presenter\Traits\Presentable
特质,这将自动实例化您的展示者类
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Laracodes\Presenter\Traits\Presentable; class User extends Model { use Presentable; protected $presenter = 'App\Presenters\UserPresenter'; ... }
完成,现在您可以在视图中调用它了
<h1>Hello, {{ $user->present()->fullName }}</h1> <h1>Hello, {{ $user->present()->full_name }}</h1> // automatically convert to camelCase
注意,调用present()方法(它将返回您的新或缓存的展示者对象)的好处在于,如果您需要修改页面上完整名称的显示方式,它将非常清楚地指出您必须去哪里。
注意事项
当您调用其展示者类中不存在的方法时,此包将自动调用模型中的属性,并将其转换为snake_case。
例
// automatically calls the property in the model <h1>Hello, {{ $user->present()->firstName }}</h1> // automatically convert to snake_case <h1>Hello, {{ $user->present()->first_name }}</h1>
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅CONTRIBUTING。
安全性
如果您发现任何安全相关的问题,请通过电子邮件报告,而不是使用问题跟踪器。
致谢
此包主要受到这个由@laracasts提供的出色包的启发,并从guilhermegonzaga/presenter分支而来。
关于Padosoft
Padosoft (https://www.padosoft.com) 是一家位于意大利佛罗伦萨的软件公司。专注于电子商务和网站。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。