mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
As discussed with Andi, add this helper API for setting the object pointer from
within the constructor. Please read the comment for notes about how to use it; in general, you don't need it, so don't use it.
This commit is contained in:
parent
7d15d8cc3e
commit
3a4f33e31f
2 changed files with 17 additions and 0 deletions
|
@ -190,6 +190,20 @@ ZEND_API void *zend_object_store_get_object(zval *zobject TSRMLS_DC)
|
|||
return EG(objects_store).object_buckets[handle].bucket.obj.object;
|
||||
}
|
||||
|
||||
/* zend_object_store_set_object:
|
||||
* It is ONLY valid to call this function from within the constructor of an
|
||||
* overloaded object. Its purpose is to set the object pointer for the object
|
||||
* when you can't possibly know its value until you have parsed the arguments
|
||||
* from the constructor function. You MUST NOT use this function for any other
|
||||
* weird games, or call it at any other time after the object is constructed.
|
||||
* */
|
||||
ZEND_API void zend_object_store_set_object(zval *zobject, void *object TSRMLS_DC)
|
||||
{
|
||||
zend_object_handle handle = Z_OBJ_HANDLE_P(zobject);
|
||||
|
||||
EG(objects_store).object_buckets[handle].bucket.obj.object = object;
|
||||
}
|
||||
|
||||
|
||||
/* Proxy objects workings */
|
||||
typedef struct _zend_proxy_object {
|
||||
|
|
|
@ -67,6 +67,9 @@ ZEND_API void zend_objects_store_del_ref(zval *object TSRMLS_DC);
|
|||
ZEND_API void zend_objects_store_delete_obj(zval *object TSRMLS_DC);
|
||||
ZEND_API zend_object_value zend_objects_store_clone_obj(zval *object TSRMLS_DC);
|
||||
ZEND_API void *zend_object_store_get_object(zval *object TSRMLS_DC);
|
||||
/* See comment in zend_objects_API.c before you use this */
|
||||
ZEND_API void zend_object_store_set_object(zval *zobject, void *object TSRMLS_DC);
|
||||
|
||||
ZEND_API void zend_objects_store_free_object_storage(zend_objects_store *objects TSRMLS_DC);
|
||||
|
||||
#define ZEND_OBJECTS_STORE_HANDLERS zend_objects_store_add_ref, zend_objects_store_del_ref, zend_objects_store_clone_obj
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue