PHP 7.4的弱引用如何改写成长尾,以探究其深层应用机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计397个文字,预计阅读时间需要2分钟。
PHP 7.4 中的弱引用介绍:弱引用允许程序员保留对对象的引用,同时不会阻止对象被垃圾回收。这对实现类似缓存的结构非常有用。目前,PHP 已扩展了对弱引用的支持。
PHP 7.4中的弱引用(Weak References )
介绍
弱引用允许程序员保留对对象的引用,而该对象不会阻止对象被销毁;它们对于实现类似缓存的结构非常有用。它们目前在PHP中得到了扩展支持。
WeakRef目前的实现都是通过重载对象处理程序来实现的,最流行的实现(pecl-weakref)改变了分配给只读内存的堆栈,PHP 7.3将使其不可用。以其他方式更改对象处理程序的其他实现也存在出现故障的风险,并且依赖于未定义的行为和抛弃一致性。
其他实现也是可能的,krakjoe/uref是一个使用低层特性(mprotect、0xCC、信号)来实现weakrefs的实现,但代价是可移植性、生成分段错误、保护内存和隐式信号处理程序限制。
原则上,弱引用对象并不复杂,只需要(ab)使用Zend或下面的层,因为我们不直接支持它。
建议
我们以最简单的方式直接支持弱引用。
API
该API:
final class WeakReference { public static function create(object $object) : WeakReference; public function get() : ?object; }
向后不兼容的更改
没有。
翻译:wiki.php.net/rfc/weakrefs
本文共计397个文字,预计阅读时间需要2分钟。
PHP 7.4 中的弱引用介绍:弱引用允许程序员保留对对象的引用,同时不会阻止对象被垃圾回收。这对实现类似缓存的结构非常有用。目前,PHP 已扩展了对弱引用的支持。
PHP 7.4中的弱引用(Weak References )
介绍
弱引用允许程序员保留对对象的引用,而该对象不会阻止对象被销毁;它们对于实现类似缓存的结构非常有用。它们目前在PHP中得到了扩展支持。
WeakRef目前的实现都是通过重载对象处理程序来实现的,最流行的实现(pecl-weakref)改变了分配给只读内存的堆栈,PHP 7.3将使其不可用。以其他方式更改对象处理程序的其他实现也存在出现故障的风险,并且依赖于未定义的行为和抛弃一致性。
其他实现也是可能的,krakjoe/uref是一个使用低层特性(mprotect、0xCC、信号)来实现weakrefs的实现,但代价是可移植性、生成分段错误、保护内存和隐式信号处理程序限制。
原则上,弱引用对象并不复杂,只需要(ab)使用Zend或下面的层,因为我们不直接支持它。
建议
我们以最简单的方式直接支持弱引用。
API
该API:
final class WeakReference { public static function create(object $object) : WeakReference; public function get() : ?object; }
向后不兼容的更改
没有。
翻译:wiki.php.net/rfc/weakrefs

