定制 fatcode/hydration 二次开发

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

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

fatcode/hydration

Composer 安装命令:

composer require fatcode/hydration

包简介

Hydration/Extraction library for PHP7

README 文档

README

Installation

composer require fatcode/hydration

Hydration

Hydration is a process of populating object from a set of data. Storage library provides mechanisms and interfaces for both hydrating and extracting data sets.

Schemas

Schema is an object describing how dataset should be hydrated. Schemas should be registered in \FatCode\Hydration\ObjectHydrator, so your data can be easily hydrated/extracted.

<?php
use FatCode\Hydration\Schema;
use FatCode\Hydration\Type;

class MyUser 
{
    private $id;
    private $name;
    private $age;
    private $interests = [];
    
    public function __construct(int $id, string $name, int $age) 
    {
        $this->id = $id;
        $this->name = $name;
        $this->age = $age;
    }
}

class MyUserSchema extends Schema
{
    protected $id;
    protected $name;
    protected $age;
    protected $interests;
    
    public function __construct()
    {
        $this->id = Type::id();
        $this->name = Type::string();
        $this->age = Type::integer();
        $this->interests = Type::array();
    }
    
    // Target class has to be provided so schema knows to which class it is corresponding.
    public function getTargetClass() : string
    {
        return MyUser::class;
    }
}

Note: Please make sure that your schema properties are either protected or public, so they can be accessed from the parent class. Private properties will not be recognized and this can result in null values or errors.

Above we have defined domain class MyUser and corresponding schema class MyUserSchema. Having this setup we can start hydration/extraction process.

Hydration with ObjectHydrator

\FatCode\Hydration\ObjectHydrator is at the same time registry for all your schema classes and general purpose hydrator/extractor functionality provider. This may sound like a lot responsibility is put into the class but keep in mind that hydration/extraction process must be described by schema before it can happen and ObjectHydrator provides utilities to simplify your workflow with extraction/hydration and schema loading.

In order to hydrate/extract object, a schema must be recognized by ObjectHydrator. There are two ways of doing it:

  • passing schema to \FatCode\Hydration\ObjectHydrator::addSchema method
  • implementing and passing instance of \FatCode\Hydration\SchemaLoader to \FatCode\Hydration\ObjectHydrator::addSchemaLoader method

For now on we will focus on the first one.

Registering schema in the ObjectHydrator

<?php
use FatCode\Hydration\ObjectHydrator;

$objectHydrator = new ObjectHydrator();
$objectHydrator->addSchema(new MyUserSchema());

The above code registers schema presented in the previous chapter. From this point on any instance of MyUser class can be hydrated or extracted with ObjectHydrator.

Hydrating objects

<?php
use FatCode\Hydration\ObjectHydrator;

$objectHydrator = new ObjectHydrator();
$objectHydrator->addSchema(new MyUserSchema());

// Hydration
$bob = $objectHydrator->hydrate(
    [
        'id' => 1,
        'name' => 'Bob',
        'age' => 30,
        'interests' => ['Flowers', 'Judo', 'M1lf$']
    ], 
    MyUser::class
);

Extracting objects

<?php
use FatCode\Hydration\ObjectHydrator;

$objectHydrator = new ObjectHydrator();
$objectHydrator->addSchema(new MyUserSchema());
$bob = new MyUser(1, 'Bob', 30);
$dataset = $objectHydrator->extract($bob); // ['id' => 1, 'name' => 'Bob', 'age' => 30, 'interests' => []]

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-04-18

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固