php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_object_handlers.c File Reference
#include "zend.h"
#include "zend_globals.h"
#include "zend_lazy_objects.h"
#include "zend_variables.h"
#include "zend_API.h"
#include "zend_objects.h"
#include "zend_objects_API.h"
#include "zend_object_handlers.h"
#include "zend_interfaces.h"
#include "zend_exceptions.h"
#include "zend_closures.h"
#include "zend_compile.h"
#include "zend_hash.h"
#include "zend_property_hooks.h"
#include "zend_observer.h"

Go to the source code of this file.

Macros

#define DEBUG_OBJECT_HANDLERS   0
 
#define ZEND_WRONG_PROPERTY_OFFSET   0
 
#define ZEND_HOOKED_PROPERTY_OFFSET   1
 
#define IN_GET   ZEND_GUARD_PROPERTY_GET
 
#define IN_SET   ZEND_GUARD_PROPERTY_SET
 
#define IN_UNSET   ZEND_GUARD_PROPERTY_UNSET
 
#define IN_ISSET   ZEND_GUARD_PROPERTY_ISSET
 
#define IN_HOOK   ZEND_GUARD_PROPERTY_HOOK
 

Functions

ZEND_API HashTablerebuild_object_properties_internal (zend_object *zobj)
 
ZEND_API HashTablezend_std_build_object_properties_array (zend_object *zobj)
 
ZEND_API HashTablezend_std_get_properties (zend_object *zobj)
 
ZEND_API HashTablezend_get_properties_no_lazy_init (zend_object *zobj)
 
ZEND_API HashTablezend_std_get_gc (zend_object *zobj, zval **table, int *n)
 
ZEND_API HashTablezend_std_get_debug_info (zend_object *object, int *is_temp)
 
ZEND_API zend_property_infozend_get_property_info (const zend_class_entry *ce, zend_string *member, int silent)
 
ZEND_API zend_result zend_check_property_access (const zend_object *zobj, zend_string *prop_info_name, bool is_dynamic)
 
ZEND_API bool ZEND_FASTCALL zend_asymmetric_property_has_set_access (const zend_property_info *prop_info)
 
ZEND_API uint32_t * zend_get_property_guard (zend_object *zobj, zend_string *member)
 
ZEND_API uint32_t * zend_get_recursion_guard (zend_object *zobj)
 
ZEND_API zvalzend_std_read_property (zend_object *zobj, zend_string *name, int type, void **cache_slot, zval *rv)
 
ZEND_API zvalzend_std_write_property (zend_object *zobj, zend_string *name, zval *value, void **cache_slot)
 
ZEND_API zvalzend_std_read_dimension (zend_object *object, zval *offset, int type, zval *rv)
 
ZEND_API void zend_std_write_dimension (zend_object *object, zval *offset, zval *value)
 
ZEND_API int zend_std_has_dimension (zend_object *object, zval *offset, int check_empty)
 
ZEND_API zvalzend_std_get_property_ptr_ptr (zend_object *zobj, zend_string *name, int type, void **cache_slot)
 
ZEND_API void zend_std_unset_property (zend_object *zobj, zend_string *name, void **cache_slot)
 
ZEND_API void zend_std_unset_dimension (zend_object *object, zval *offset)
 
ZEND_API bool zend_check_protected (const zend_class_entry *ce, const zend_class_entry *scope)
 
ZEND_API zend_functionzend_get_call_trampoline_func (const zend_class_entry *ce, zend_string *method_name, bool is_static)
 
ZEND_API zend_functionzend_get_property_hook_trampoline (const zend_property_info *prop_info, zend_property_hook_kind kind, zend_string *prop_name)
 
ZEND_API zend_functionzend_std_get_method (zend_object **obj_ptr, zend_string *method_name, const zval *key)
 
ZEND_API zend_functionzend_std_get_static_method (zend_class_entry *ce, zend_string *function_name, const zval *key)
 
ZEND_API void zend_class_init_statics (zend_class_entry *class_type)
 
ZEND_API zvalzend_std_get_static_property_with_info (zend_class_entry *ce, zend_string *property_name, int type, zend_property_info **property_info_ptr)
 
ZEND_API zvalzend_std_get_static_property (zend_class_entry *ce, zend_string *property_name, int type)
 
ZEND_API ZEND_COLD bool zend_std_unset_static_property (zend_class_entry *ce, zend_string *property_name)
 
ZEND_API zend_functionzend_std_get_constructor (zend_object *zobj)
 
ZEND_API int zend_std_compare_objects (zval *o1, zval *o2)
 
ZEND_API int zend_objects_not_comparable (zval *o1, zval *o2)
 
ZEND_API int zend_std_has_property (zend_object *zobj, zend_string *name, int has_set_exists, void **cache_slot)
 
ZEND_API zend_stringzend_std_get_class_name (const zend_object *zobj)
 
ZEND_API zend_result zend_std_cast_object_tostring (zend_object *readobj, zval *writeobj, int type)
 
ZEND_API zend_result zend_std_get_closure (zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only)
 
ZEND_API HashTablezend_std_get_properties_for (zend_object *obj, zend_prop_purpose purpose)
 
ZEND_API HashTablezend_get_properties_for (zval *obj, zend_prop_purpose purpose)
 

Variables

ZEND_API const zend_object_handlers std_object_handlers
 

Macro Definition Documentation

◆ DEBUG_OBJECT_HANDLERS

#define DEBUG_OBJECT_HANDLERS   0

Definition at line 37 of file zend_object_handlers.c.

◆ IN_GET

Definition at line 43 of file zend_object_handlers.c.

◆ IN_HOOK

Definition at line 47 of file zend_object_handlers.c.

◆ IN_ISSET

Definition at line 46 of file zend_object_handlers.c.

◆ IN_SET

Definition at line 44 of file zend_object_handlers.c.

◆ IN_UNSET

Definition at line 45 of file zend_object_handlers.c.

◆ ZEND_HOOKED_PROPERTY_OFFSET

#define ZEND_HOOKED_PROPERTY_OFFSET   1

Definition at line 40 of file zend_object_handlers.c.

◆ ZEND_WRONG_PROPERTY_OFFSET

#define ZEND_WRONG_PROPERTY_OFFSET   0

Definition at line 39 of file zend_object_handlers.c.

Function Documentation

◆ rebuild_object_properties_internal()

ZEND_API HashTable * rebuild_object_properties_internal ( zend_object * zobj)

Definition at line 75 of file zend_object_handlers.c.

◆ zend_asymmetric_property_has_set_access()

ZEND_API bool ZEND_FASTCALL zend_asymmetric_property_has_set_access ( const zend_property_info * prop_info)

Definition at line 580 of file zend_object_handlers.c.

◆ zend_check_property_access()

ZEND_API zend_result zend_check_property_access ( const zend_object * zobj,
zend_string * prop_info_name,
bool is_dynamic )

Definition at line 534 of file zend_object_handlers.c.

◆ zend_check_protected()

ZEND_API bool zend_check_protected ( const zend_class_entry * ce,
const zend_class_entry * scope )

Definition at line 1639 of file zend_object_handlers.c.

◆ zend_class_init_statics()

ZEND_API void zend_class_init_statics ( zend_class_entry * class_type)

Definition at line 1993 of file zend_object_handlers.c.

◆ zend_get_call_trampoline_func()

ZEND_API zend_function * zend_get_call_trampoline_func ( const zend_class_entry * ce,
zend_string * method_name,
bool is_static )

Definition at line 1666 of file zend_object_handlers.c.

◆ zend_get_properties_for()

ZEND_API HashTable * zend_get_properties_for ( zval * obj,
zend_prop_purpose purpose )

Definition at line 2528 of file zend_object_handlers.c.

◆ zend_get_properties_no_lazy_init()

ZEND_API HashTable * zend_get_properties_no_lazy_init ( zend_object * zobj)

Definition at line 151 of file zend_object_handlers.c.

◆ zend_get_property_guard()

ZEND_API uint32_t * zend_get_property_guard ( zend_object * zobj,
zend_string * member )

Definition at line 604 of file zend_object_handlers.c.

◆ zend_get_property_hook_trampoline()

ZEND_API zend_function * zend_get_property_hook_trampoline ( const zend_property_info * prop_info,
zend_property_hook_kind kind,
zend_string * prop_name )

Definition at line 1775 of file zend_object_handlers.c.

◆ zend_get_property_info()

ZEND_API zend_property_info * zend_get_property_info ( const zend_class_entry * ce,
zend_string * member,
int silent )

Definition at line 469 of file zend_object_handlers.c.

◆ zend_get_recursion_guard()

ZEND_API uint32_t * zend_get_recursion_guard ( zend_object * zobj)

Definition at line 652 of file zend_object_handlers.c.

◆ zend_objects_not_comparable()

ZEND_API int zend_objects_not_comparable ( zval * o1,
zval * o2 )

Definition at line 2246 of file zend_object_handlers.c.

◆ zend_std_build_object_properties_array()

ZEND_API HashTable * zend_std_build_object_properties_array ( zend_object * zobj)

Definition at line 107 of file zend_object_handlers.c.

◆ zend_std_cast_object_tostring()

ZEND_API zend_result zend_std_cast_object_tostring ( zend_object * readobj,
zval * writeobj,
int type )

Definition at line 2426 of file zend_object_handlers.c.

◆ zend_std_compare_objects()

ZEND_API int zend_std_compare_objects ( zval * o1,
zval * o2 )

Definition at line 2128 of file zend_object_handlers.c.

◆ zend_std_get_class_name()

ZEND_API zend_string * zend_std_get_class_name ( const zend_object * zobj)

Definition at line 2420 of file zend_object_handlers.c.

◆ zend_std_get_closure()

ZEND_API zend_result zend_std_get_closure ( zend_object * obj,
zend_class_entry ** ce_ptr,
zend_function ** fptr_ptr,
zend_object ** obj_ptr,
bool check_only )

Definition at line 2456 of file zend_object_handlers.c.

◆ zend_std_get_constructor()

ZEND_API zend_function * zend_std_get_constructor ( zend_object * zobj)

Definition at line 2106 of file zend_object_handlers.c.

◆ zend_std_get_debug_info()

ZEND_API HashTable * zend_std_get_debug_info ( zend_object * object,
int * is_temp )

Definition at line 193 of file zend_object_handlers.c.

◆ zend_std_get_gc()

ZEND_API HashTable * zend_std_get_gc ( zend_object * zobj,
zval ** table,
int * n )

Definition at line 171 of file zend_object_handlers.c.

◆ zend_std_get_method()

ZEND_API zend_function * zend_std_get_method ( zend_object ** obj_ptr,
zend_string * method_name,
const zval * key )

Definition at line 1836 of file zend_object_handlers.c.

◆ zend_std_get_properties()

ZEND_API HashTable * zend_std_get_properties ( zend_object * zobj)

Definition at line 144 of file zend_object_handlers.c.

◆ zend_std_get_properties_for()

ZEND_API HashTable * zend_std_get_properties_for ( zend_object * obj,
zend_prop_purpose purpose )

Definition at line 2480 of file zend_object_handlers.c.

◆ zend_std_get_property_ptr_ptr()

ZEND_API zval * zend_std_get_property_ptr_ptr ( zend_object * zobj,
zend_string * name,
int type,
void ** cache_slot )

Definition at line 1375 of file zend_object_handlers.c.

◆ zend_std_get_static_method()

ZEND_API zend_function * zend_std_get_static_method ( zend_class_entry * ce,
zend_string * function_name,
const zval * key )

Definition at line 1932 of file zend_object_handlers.c.

◆ zend_std_get_static_property()

ZEND_API zval * zend_std_get_static_property ( zend_class_entry * ce,
zend_string * property_name,
int type )

Definition at line 2080 of file zend_object_handlers.c.

◆ zend_std_get_static_property_with_info()

ZEND_API zval * zend_std_get_static_property_with_info ( zend_class_entry * ce,
zend_string * property_name,
int type,
zend_property_info ** property_info_ptr )

Definition at line 2017 of file zend_object_handlers.c.

◆ zend_std_has_dimension()

ZEND_API int zend_std_has_dimension ( zend_object * object,
zval * offset,
int check_empty )

Definition at line 1346 of file zend_object_handlers.c.

◆ zend_std_has_property()

ZEND_API int zend_std_has_property ( zend_object * zobj,
zend_string * name,
int has_set_exists,
void ** cache_slot )

Definition at line 2252 of file zend_object_handlers.c.

◆ zend_std_read_dimension()

ZEND_API zval * zend_std_read_dimension ( zend_object * object,
zval * offset,
int type,
zval * rv )

Definition at line 1272 of file zend_object_handlers.c.

◆ zend_std_read_property()

ZEND_API zval * zend_std_read_property ( zend_object * zobj,
zend_string * name,
int type,
void ** cache_slot,
zval * rv )

Definition at line 727 of file zend_object_handlers.c.

◆ zend_std_unset_dimension()

ZEND_API void zend_std_unset_dimension ( zend_object * object,
zval * offset )

Definition at line 1600 of file zend_object_handlers.c.

◆ zend_std_unset_property()

ZEND_API void zend_std_unset_property ( zend_object * zobj,
zend_string * name,
void ** cache_slot )

Definition at line 1475 of file zend_object_handlers.c.

◆ zend_std_unset_static_property()

ZEND_API ZEND_COLD bool zend_std_unset_static_property ( zend_class_entry * ce,
zend_string * property_name )

Definition at line 2086 of file zend_object_handlers.c.

◆ zend_std_write_dimension()

ZEND_API void zend_std_write_dimension ( zend_object * object,
zval * offset,
zval * value )

Definition at line 1323 of file zend_object_handlers.c.

◆ zend_std_write_property()

ZEND_API zval * zend_std_write_property ( zend_object * zobj,
zend_string * name,
zval * value,
void ** cache_slot )

Definition at line 1031 of file zend_object_handlers.c.

Variable Documentation

◆ std_object_handlers

ZEND_API const zend_object_handlers std_object_handlers
Initial value:
= {
0,
NULL,
NULL,
NULL,
}
#define NULL
Definition gdcache.h:45
ZEND_API zval * zend_std_get_property_ptr_ptr(zend_object *zobj, zend_string *name, int type, void **cache_slot)
ZEND_API HashTable * zend_std_get_debug_info(zend_object *object, int *is_temp)
ZEND_API zend_string * zend_std_get_class_name(const zend_object *zobj)
ZEND_API zend_function * zend_std_get_method(zend_object **obj_ptr, zend_string *method_name, const zval *key)
ZEND_API zend_result zend_std_cast_object_tostring(zend_object *readobj, zval *writeobj, int type)
ZEND_API int zend_std_has_dimension(zend_object *object, zval *offset, int check_empty)
ZEND_API HashTable * zend_std_get_properties(zend_object *zobj)
ZEND_API int zend_std_has_property(zend_object *zobj, zend_string *name, int has_set_exists, void **cache_slot)
ZEND_API zval * zend_std_write_property(zend_object *zobj, zend_string *name, zval *value, void **cache_slot)
ZEND_API void zend_std_unset_property(zend_object *zobj, zend_string *name, void **cache_slot)
ZEND_API void zend_std_unset_dimension(zend_object *object, zval *offset)
ZEND_API zval * zend_std_read_property(zend_object *zobj, zend_string *name, int type, void **cache_slot, zval *rv)
ZEND_API zval * zend_std_read_dimension(zend_object *object, zval *offset, int type, zval *rv)
ZEND_API int zend_std_compare_objects(zval *o1, zval *o2)
ZEND_API void zend_std_write_dimension(zend_object *object, zval *offset, zval *value)
ZEND_API HashTable * zend_std_get_gc(zend_object *zobj, zval **table, int *n)
ZEND_API zend_function * zend_std_get_constructor(zend_object *zobj)
ZEND_API zend_result zend_std_get_closure(zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only)
ZEND_API void zend_objects_destroy_object(zend_object *object)
ZEND_API zend_object * zend_objects_clone_obj(zend_object *old_object)
ZEND_API void zend_object_std_dtor(zend_object *object)

Definition at line 2538 of file zend_object_handlers.c.