Module ext_php_rs::php::boxed [−][src]
Expand description
A pointer type for heap allocation using the Zend memory manager.
Heap memory in PHP is usually request-bound and allocated inside memory arenas, which are cleared
at the start and end of a PHP request. Allocating and freeing memory that is allocated on the Zend
heap is done through two separate functions efree
and emalloc
.
As such, most heap-allocated PHP types cannot be allocated on the stack, such as ZendStr
, which
is a dynamically-sized type, and therefore must be allocated on the heap. A regular Box
would not
work in this case, as the memory needs to be freed from a separate function zend_string_release
. The
ZBox
type provides a wrapper which calls the relevant release functions based on the type and what is
inside the implementation of ZBoxable
.
This type is not created directly, but rather through a function implemented on the downstream type. For
example, ZendStr
has a function new
which returns a ZBox<ZendStr>
.
Structs
A pointer type for heap allocation using the Zend memory manager.