iddqdby / weak-array
弱引用数组。
v2.0.1
2016-03-21 13:46 UTC
Requires
- php: ^5.5 || ^7.0
- ext-weakref: ~0.2
Requires (Dev)
- phpunit/php-invoker: ^1.1
- phpunit/phpunit: ^4.8 || ^5.2
README
简短描述
WeakArray 是一个基于 WeakRef PHP 扩展(参见 https://pecl.php.net/package/Weakref)的弱引用数组。
它保存对象的弱引用,允许在没有其他引用的情况下进行垃圾回收。
如何安装
composer require iddqdby/weak-array
或下载存档,解压缩并包含文件 autoload.php。
示例
基本用法
代码
$weak_array = new WeakArray\WeakArray(); $foo = new stdClass(); $bar = new stdClass(); $baz = new stdClass(); $weak_array['foo'] = $foo; $weak_array['bar'] = $bar; $weak_array['baz'] = $baz; var_export($weak_array['foo']); echo "\n"; var_export($weak_array['bar']); echo "\n"; var_export($weak_array['baz']); echo "\n"; echo "====\n"; unset($foo); unset($bar); var_export($weak_array['foo']); echo "\n"; var_export($weak_array['bar']); echo "\n"; var_export($weak_array['baz']); echo "\n";
输出
stdClass::__set_state(array(
))
stdClass::__set_state(array(
))
stdClass::__set_state(array(
))
====
NULL
NULL
stdClass::__set_state(array(
))
事件
代码
class Observer implements \SplObserver { public function update(\SplSubject $event) { // $event instanceof WeakArray\Event; // see WeakArray\Event class to view all available methods and Event::* constants switch ($event->getType()) { case WeakArray\Event::OBJECT_SET: $event_str = 'set'; break; case WeakArray\Event::OBJECT_UNSET: $event_str = 'unset'; break; case WeakArray\Event::OBJECT_DESTRUCTED: $event_str = 'destructed'; break; } printf("Object %s, key %s\n", $event_str, $event->getKey()); } } $weak_array = new WeakArray\WeakArray(); $observer = new Observer(); $weak_array->attach($observer); $foo = new stdClass(); $bar = new stdClass(); $baz = new stdClass(); $weak_array['foo'] = $foo; $weak_array['bar'] = $bar; $weak_array['baz'] = $baz; unset($foo); unset($weak_array['bar']); unset($weak_array['baz']);
输出
Object set, key foo
Object set, key bar
Object set, key baz
Object destructed, key foo
Object unset, key bar
Object unset, key baz
请参阅 examples/ 和 test/ 目录中的工作示例。
要求
- PHP: 5.5, 5.6, 7.0
- WeakRef PHP 扩展:PHP 5.5 和 PHP 5.6 的 0.2.6,PHP 7.0 的 >=0.3
主页
https://iddqdby.github.io/weak-array/
版本控制
此项目遵循 语义版本控制原则。
许可证
此项目受 MIT 许可证的许可。请参阅 LICENSE。