drewlabs/php-value

PHP 对象构建和序列化库

v0.3.2 2024-09-23 17:31 UTC

README

该库为 PHP 应用和项目提供实用对象。

用法

库提供了两种创建对象的方式。

您可以使用面向对象实现,可以扩展抽象类 [Drewlabs\PHPValue\Value]

  • 面向对象实现
use Drewlabs\PHPValue\ObjectAdapter;

class ValueStub extends ObjectAdapter
{
    protected $__PROPERTIES__ = [
        'name',
        'address',
    ];
}

// Creating instance
$value = new ValueStub([
    'name' => 'Azandrew',
    'address' => '288 Avenue Pia, Lome'
]);

或者使用 [Drewlabs\PHPValue\Functions\CreateValue] 函数。

  • 函数式接口
// Imports
use function Drewlabs\PHPValue\Functions\CreateAdapter;

$value =  CreateAdapter([
    // dynamic properties
    'name',
    'address'
]);

使用这两种方式,您都会创建 [Drewlabs\PHPValue\Value] 类的一个实例。

  • 创建对象的副本
// Imports
use function Drewlabs\PHPValue\Functions\CreateAdapter;
$value =  CreateAdapter([
    // dynamic properties
    'name',
    'address'
]);

// This tries to create a deep copy of the object
$value1 = $value->copy([
    'name' => 'Sidoine Azandrew'
]);
  • 获取对象的属性

值对象是数组可访问的,这意味着我们可以使用 [] 运算符来访问对象属性。它还覆盖了 [__get] 魔术方法以实现属性可访问性,并提供了一个 [getAttribute()] 方法,用于在对象上查询属性。

// Imports
use function Drewlabs\PHPValue\Functions\CreateAdapter;
$value =  CreateAdapter([
    // dynamic properties
    'name',
    'address'
]);

$result = $value['name']; 
// Same as
$result = $value->name;
// Same as
$result = $value->getAttribute('name');