josécelano/php-object-literal

用于创建PHP对象字面量的工厂类

dev-master 2017-03-24 23:28 UTC

This package is auto-updated.

Last update: 2024-09-29 04:53:28 UTC


README

Latest Version Build Status Code Coverage Quality Score Total Downloads

Email

PHP 5.5+ 库,用于创建类似于JavaScript或Ruby的对象字面量。

在PHP中创建对象字面量不像在JavaScript或Ruby中那样简单(或优雅)。

你可以这样创建对象字面量

$object = new Object([
    "name" => "Fido",
    "barks" => true,
    "age" => 10
]);

或者

$object = new Object([
    "name" => "Fido",
    "barks" => true,
    "age" => 10,
    'say' => function ($self) {
        if ($self->barks) {
            return "Woof";
        }
        return "";
    }
]);

或者

$object = new Object('{
    "name" : "Fido",
    "barks" : true,
    "age" : 10
}');

代替

$object = new Object();
$object->name = 'Fido';
$object->barks = true;
$object->age = 10;

这个类受到了以下两篇博客文章的启发

实际上,有一个旧的PHP RFC(2011-06-04)尚未完全实现

当RFC未实现时,可以使用此类。

安装

通过Composer

$ composer require josecelano/php-object-literal

特性

  • 从数组构建。
  • 从JSON构建。
  • 从具有动态键和值的JSON构建。

测试

我尽量遵循TDD,因此我使用phpunit来测试这个库。

$ composer test

待办事项

  • 添加魔法获取器和设置器。
  • 允许在Json中替换变量值,类似于JavaScript:
$object = new Object("{
    \"name\" : \"" . $valueForName . "\",
    \"barks\" : true,
    \"age\" : 10
}");

$object = new Object('{
    "name" : $valueForName,
    "barks" : true,
    "age" : 10
}', get_defined_vars());

$valueForName替换为其值。

  • 允许当前无效的PHP json格式。
$invalidJson1 = "{ 'bar': 'baz' }";
$invalidJson2 = '{ bar: "baz" }';
$invalidJson3 = '{ bar: "baz", }';
  • 在JSON格式中添加可调用类型。
  • 允许使用类似于ES6的属性值简写
$object = new Object('{
    $name,
    $barks,
    $age
}', get_defined_vars());

许可协议

MIT许可(MIT)。请参阅许可文件以获取更多信息。