ag84ark/object-convertor

数组转对象转换

1.2.0 2022-08-25 10:15 UTC

This package is auto-updated.

Last update: 2024-09-25 15:01:00 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

此包帮助轻松地将数组转换为具有设置器和获取器的预定义类

为了更好地了解此包的使用,请查看Usage以及tests文件夹中的示例,在那里您可以更好地了解如何使用此类。

我创建此包是因为它在我处理数据库中的JSON信息时非常有帮助,这些信息是按类和子类结构化的。

真心希望它也能对其他人有所帮助!

安装

您可以通过composer安装此包

composer require ag84ark/object-convertor

使用方法

当为Laravel应用程序创建类时,尽量扩展BaseModelApi,因为它会帮助您处理很多事情。

示例类

use ag84ark\ObjectConvertor\BaseModelApi;
use ag84ark\ObjectConvertor\ObjectConstructorTrait;

class SomeClass extends BaseModelApi
{
    use ObjectConstructorTrait;

    
    private $a;
    private $b;
    private $other = '';
    private $BigVar = '';
    private $camelVar = '';
    private $snake_var = '';

    public function getBigVar(): string
    {
        return $this->BigVar;
    }

    public function setBigVar(string $BigVar): void
    {
        $this->BigVar = $BigVar;
    }

    /**
     * @return mixed
     */
    public function getA()
    {
        return $this->a;
    }

    /**
     * @param mixed $a
     */
    public function setA($a): void
    {
        $this->a = $a;
    }

    /**
     * @return mixed
     */
    public function getB()
    {
        return $this->b;
    }

    /**
     * @param mixed $b
     */
    public function setB($b): void
    {
        $this->b = $b;
    }

    public function getOther(): string
    {
        return $this->other;
    }

    public function setOther(string $other): void
    {
        $this->other = $other;
    }

    public function getCamelVar(): string
    {
        return $this->camelVar;
    }

    public function setCamelVar(string $camelVar): void
    {
        $this->camelVar = $camelVar;
    }

    public function getSnakeVar(): string
    {
        return $this->snake_var;
    }

    public function setSnakeVar(string $snake_var): void
    {
        $this->snake_var = $snake_var;
    }

    // ....
}

通过构造函数(需要ObjectConstructorTrait)

$array = ['a' => 'val_a', 'b' => 'val_b', 'other' => 'val_other'];

$someClassObject = new SomeClass($array);

从数组(需要ObjectConstructorTrait)

$array = ['a' => 'val_a', 'b' => 'val_b', 'other' => 'val_other'];

$someClassObject = SomeClass::fromArray($array);

通过ObjectConvertor到扩展BaseModelApi的类

$array = ['a' => 'val_a', 'b' => 'val_b', 'other' => 'val_other'];

/** @var SomeClass $someClassObject */
$someClassObject = ObjectConvertor::toObjectBaseModelApi($array, new SomeClass());

通过ObjectConvertor到普通类

$array = ['a' => 'val_a', 'b' => 'val_b', 'other' => 'val_other'];

/** @var SomeClass $someClassObject */
$someClassObject = ObjectConvertor::toObject($array, new SomeClass());

基本类示例

class BasicClass
{
    private $var1;
    private $var2;

    /**
     * @return mixed
     */
    public function getVar1()
    {
        return $this->var1;
    }

    /**
     * @param mixed $var1
     */
    public function setVar1($var1): void
    {
        $this->var1 = $var1;
    }

    /**
     * @return mixed
     */
    public function getVar2()
    {
        return $this->var2;
    }

    /**
     * @param mixed $var2
     */
    public function setVar2($var2): void
    {
        $this->var2 = $var2;
    }
}


$array = ['var1' => 'val_a', 'var2' => 'val_b'];

/** @var BasicClass $basicClassObject */
$basicClassObject = ObjectConvertor::toObject($array, new BasicClass());

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现任何安全相关的问题,请通过arkangel062003@gmail.com发送电子邮件,而不是使用问题跟踪器。

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件

Laravel包模板

此包是用Laravel包模板生成的。