northern / serializer
将注解对象序列化为普通PHP数组。
1.0.1
2014-07-26 00:35 UTC
Requires
- php: >=5.3.0
- doctrine/annotations: 1.*
- northern/common: 1.*
Requires (Dev)
- phpunit/phpunit: ~4.1
This package is not auto-updated.
Last update: 2024-09-24 03:28:34 UTC
README
Northern\Serializer 是一个小的PHP库,允许您注解您的POPO(Plain Old PHP Objects),并将它们序列化为普通PHP数组。
运行测试
vendor/bin/phpunit
生成代码覆盖率报告
vendor/bin/phpunit --coverage-html ./reports
在 Packagist 上查找 Northern\Serializer
安装
通过 Composer 安装。
"require": { "northern/serializer": "1.*" }
如何使用
要使用 Northern\Serializer,您需要导入它
use Northern\Serializer\Serializer;
现在,您可以在任何PHP对象上实例化和运行序列化器
$serializer = new Serializer(); $array = $serializer->toArray( $someObject );
然而,如果没有对 $someObject 的类进行注解,则不会进行序列化。让我们注解 $someObject 实例的类
use Northern\Serializer\Annotation as Serialize; class SomeClass { /** @Serialize\Int */ protected $myProperty = 123; }
我们已经注解了我们的类,并指明 $myProperty 属性必须序列化为整数。现在,当我们序列化 $someObject(假设它是 SomeClass 的实例)时,$array 变量将包含序列化数据
Array( [myProperty] => 123 )
非常简单。
使用 Northern\Serializer,您还可以序列化方法。通常,序列化的方法是某种getter。让我们看看一个例子
use Northern\Serializer\Annotation as Serialize; class SomeClass { /** @Serialize\Int(name="myValue") */ public function getMyValue() { return 123; } }
如上所示,只需给方法添加正确的注解,方法的输出就会以注解中 name 参数指定的键进行序列化,例如,在我们的例子中是 myValue
Array( [myValue] => 123 )
如果没有在注解上指定 name 属性,则将使用方法名称作为序列化键,例如
class SomeClass { /** @Serialize\Bool */ public function isValid() { return true; } }
这将产生
Array( [isValid] => 1 )
序列化属性和方法当然非常方便,但是关于嵌套对象怎么办?也可以做到
class BarClass { /** @Serialize\Int */ protected $barValue = 123; } class FooClass { /** @Serialize\Object */ protected $bar; public function __construct() { $this->bar = new BarClass(); } }
注意 Serialize\Object 注解?要注意递归引用!
参考
以下是可用的序列化类型
类型 | 描述
- | -
Serialize\Bool| 序列化布尔值。Serialize\Int| 序列化整数值。Serialize\Object| 序列化对象。表示递归。Serialize\Collection| 序列化可迭代的对象,例如对象数组。