easyswoole / spl
php stander lib
2.2.2
2026-11-09 08:26 UTC
Requires
- php: >=8.1.0
- ext-dom: *
- ext-json: *
- ext-simplexml: *
Requires (Dev)
- easyswoole/swoole-ide-helper: ^1.0
- phpunit/phpunit: ^10.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- 2.x-dev
- 2.2.2
- 2.2.1
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 1.4.1
- 1.4.0
- 1.3.10
- 1.3.9
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.15
- 1.1.14
- 1.1.13
- 1.1.12
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-master
This package is auto-updated.
Last update: 2026-11-09 10:56:18 UTC
README
提供 SplBean、SplArray、字符串、流和链表等基础工具。
SplBean
SplBean 将声明的 public / protected 非静态属性用于数据还原和序列化,忽略未知输入及 private 属性。
构造顺序保持为:初始化属性和转换配置,使用输入数据执行 restore(),最后执行 initialize()。构造器提升属性(promoted properties)若已由 PHP 初始化,保留其值,避免 nullable 参数被重置为 null,也避免重复初始化 readonly 属性;明确传入的还原数据仍按原有 restore() 与 PHP readonly 规则处理。
use EasySwoole\Spl\SplBean; class Member extends SplBean { public function __construct(public ?string $name) { parent::__construct(); } } $member = new Member('Alice'); $member->toArray(); // ['name' => 'Alice']
反射缓存
SplBean 按实际运行时类缓存 ReflectionProperty 和 ReflectionAttribute 描述符,构造和序列化时复用,减少大量同类型 Bean 的重复反射。缓存仅保存类级元数据;各实例仍独立构造属性转换注解、登记转换配置及创建默认业务对象,继承类之间分别缓存。
缓存不会改变属性转换、restore()、initialize() 的调用顺序及过滤、序列化行为;构造器提升属性的保留规则同上。缓存建立完成后才执行属性注解构造器,支持注解构造过程中的重入。
所有现有 public / protected 方法的签名和转换、过滤、序列化接口保持兼容。