padosoft/laravel-presenter

Laravel的展示者设计模式实现。

1.5.0 2024-05-20 12:31 UTC

This package is auto-updated.

Last update: 2024-09-20 13:29:49 UTC


README

展示者是一种Laravel设计模式,用于将模型中的数据修改为视图中的数据。
它使数据显示方式更容易被人理解。

Latest Version on Packagist Software License Quality Score Total Downloads

目录

##需求

  • "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)。有关更多信息,请参阅许可证文件