定制 elipettingale/transformation 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

elipettingale/transformation

最新稳定版本:v1.1.3

Composer 安装命令:

composer require elipettingale/transformation

包简介

A package to easily transform data by creating transformer classes.

README 文档

README

A package to easily transform data using transformer classes. The idea behind this package is to be able to take data in one format and return it in a different or stripped down format. For example, you might use this when you are making an api endpoint and don't want to return everything or want to return something in multiple formats.

This is the generic version of this package. There is also a wordpress specific version here: https://github.com/elipettingale/wordpress-transformation

How to Install

Just install the package using composer:

composer require elipettingale/transformation

How to Use

First start by creating a transformer class:

class UserTransfomer extends Transformer
{

}

Then use the Transform class to transform some data:

$users = [
    [
        'first_name' => 'Dave',
        'last_name' => 'Test',
        'email' => 'dave@test.com'
    ],
    [
        'first_name' => 'Gina',
        'last_name' => 'Test',
        'email' => 'gina@test.com'
    ]
];

$users = Transform::all($users, UserTransfomer::class);

Based on the configuration defined in your transformer class the data will be manipulated and returned

Building a Transformer Class

There are a few tools that you can use to transform your data, these can be defined in your transformer classes.

Includes or Excludes

These are properties you can define to determine which attributes are returned.

Defining includes will mean that only attributes that you define will be returned, for example the following transformer:

class UserTransfomer extends Transformer
{
    protected $includes = [
        'first_name'
    ];
}

would mean that using our earlier example we now have the following in $users:

[
    [
        'first_name' => 'Dave'
    ],
    [
        'first_name' => 'Gina'
    ]
]

Defining excludes will mean that all attributes will be returned except for those that you define, for example the following transformer:

class UserTransfomer extends Transformer
{
    protected $excludes = [
        'first_name'
    ];
}

would now transform our $users to:

[
    [
        'last_name' => 'Test',
        'email' => 'dave@test.com'
    ],
    [
        'last_name' => 'Test',
        'email' => 'gina@test.com'
    ]
]

If you define neither then all attributes will be returned.

Renames

Don't like the name of an attribute? You can use renames to change the key of attributes:

class UserTransfomer extends Transformer
{
    protected $includes = [
        'first_name'
    ];
    
    protected $rename = [
        'first_name' => 'name'
    ];
}

will now return:

[
    [
        'name' => 'Dave'
    ],
    [
        'name' => 'Gina'
    ]
]

Mutators

If you've ever worked with Eloquent you should recognise this. A mutator is a method you define that will alter an attribute in some why before returning the data. It can also be used to define new computed attributes.

For example, take the following transformer:

class UserTransfomer extends Transformer
{
    public function getFullNameAttribute()
    {
        return $this->item['first_name'] . ' ' . $this->item['last_name'];
    }
}

This will create a new attribute called full_name and will use your function to calculate it's value.

Now when running our users through this transformer we get:

[
    'first_name' => 'Dave',
    'last_name' => 'Test',
    'email' => 'dave@test.com',
    'full_name' => 'Dave Test
],
[
    'first_name' => 'Gina',
    'last_name' => 'Test',
    'email' => 'gina@test.com',
    'full_name' => 'Gina Test
]

Note that these new attributes will still obey the defined includes, excludes and renames.

统计信息

  • 总下载量: 404
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-02-16

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固