63 EG(current_module) =
module = zend_register_module_ex(&zend_builtin_module, MODULE_PERSISTENT);
203 if (zend_forbid_dynamic_call() ==
FAILURE) {
214 uint32_t arg_count, first_extra_arg;
223 if (requested_offset < 0) {
234 if (zend_forbid_dynamic_call() ==
FAILURE) {
240 if ((
zend_ulong)requested_offset >= arg_count) {
245 first_extra_arg =
ex->func->op_array.num_args;
261 uint32_t arg_count, first_extra_arg;
272 if (zend_forbid_dynamic_call() ==
FAILURE) {
280 first_extra_arg =
ex->func->op_array.num_args;
285 if (arg_count > first_extra_arg) {
286 while (i < first_extra_arg) {
303 while (i < arg_count) {
414 bool err_is_null = 1;
415 int old_error_reporting;
424 if (!err_is_null &&
err != old_error_reporting) {
437 if (!
EG(modified_ini_directives)) {
442 p->orig_value =
p->value;
443 p->orig_modifiable =
p->modifiable;
446 }
else if (
p->orig_value !=
p->value) {
458static bool validate_constant_array_argument(
HashTable *
ht,
int argument_number)
471 }
else if (!validate_constant_array_argument(
Z_ARRVAL_P(
val), argument_number)) {
482static void copy_constant_array(
zval *dst,
zval *src)
499 copy_constant_array(new_val,
val);
529 zend_error(
E_WARNING,
"define(): Argument #3 ($case_insensitive) is ignored since declaration of case-insensitive constants is no longer supported");
540 goto register_constant;
655 bool allow_string = only_subclass;
682 if (!only_subclass &&
EXPECTED(zend_string_equals(instance_ce->
name, class_name))) {
689 if (only_subclass && instance_ce == ce) {
692 retval = instanceof_function(instance_ce, ce);
719 zval *prop, prop_copy;
802 if (properties ==
NULL) {
841 const char *unmangled_name_cstr = zend_get_unmangled_property_name(
prop_info->name);
842 zend_string *unmangled_name = zend_string_init(unmangled_name_cstr,
strlen(unmangled_name_cstr),
false);
858 const char *prop_name, *class_name;
957 lcname = zend_string_tolower(method_name);
1013 if (property_info !=
NULL
1015 || property_info->
ce == ce)) {
1077 ce = zend_hash_find_ptr(
EG(class_table),
lcname);
1094 bool autoload =
true;
1178 exists = zend_hash_exists(
EG(function_table),
lcname);
1242 switch (error_type) {
1245 " throw an exception or call exit with a string message instead");
1255 " or E_USER_DEPRECATED");
1283 zend_stack_push(&
EG(user_error_handlers_error_reporting), &
EG(user_error_handler_error_reporting));
1292 EG(user_error_handler_error_reporting) = (int)error_type;
1425 zval internal, user;
1428 bool exclude_disabled = 1;
1434 if (exclude_disabled == 0) {
1436 "get_defined_functions(): Setting $exclude_disabled to false has no effect");
1465 if (zend_forbid_dynamic_call() ==
FAILURE) {
1478#if ZEND_DEBUG && defined(ZTS)
1490 const char *resource_type;
1491 zval *z_resource_type;
1498 if (resource_type) {
1599 bool categorize = 0;
1610 zval *modules, const_val;
1611 char **module_names;
1618 module_names[0] =
"internal";
1620 module_names[module->module_number] = (
char *)module->name;
1623 module_names[i] =
"user";
1642 add_assoc_zval(
return_value, module_names[module_number], &modules[module_number]);
1649 efree(module_names);
1679 uint32_t first_extra_arg =
MIN(
num_args,
call->func->op_array.num_args);
1686 while (i < first_extra_arg) {
1689 zval *
arg = zend_hash_find_ex_ind(
call->symbol_table, arg_name, 1);
1691 call->func->common.attributes,
1692 "sensitiveparameter",
1693 sizeof(
"sensitiveparameter") - 1,
1697 bool is_sensitive = attribute !=
NULL;
1720 while (i < first_extra_arg) {
1723 call->func->common.attributes,
1724 "sensitiveparameter",
1725 sizeof(
"sensitiveparameter") - 1,
1728 bool is_sensitive = attribute !=
NULL;
1758 bool is_sensitive = 0;
1762 call->func->common.attributes,
1763 "sensitiveparameter",
1764 sizeof(
"sensitiveparameter") - 1,
1765 MIN(i,
call->func->common.num_args)
1767 is_sensitive = attribute !=
NULL;
1827 zend_string_release(str);
1837 bool fake_frame = 0;
1838 int lineno, frameno = 0;
1847 call =
EG(current_execute_data);
1852 if (
EG(filename_override)) {
1856 EG(filename_override) =
NULL;
1857 EG(lineno_override) = -1;
1861 if (filename && (!zend_string_equals(filename, filename_override) || lineno != lineno_override)) {
1865 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
1867 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
1869 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
1874 EG(filename_override) = filename_override;
1875 EG(lineno_override) = lineno_override;
1884 while (
call && (limit == 0 || frameno < limit)) {
1910 goto not_frameless_call;
1923 const zend_op *op_data = opline + 1;
1931 if (last_call && last_call->
func ==
func) {
1932 goto not_frameless_call;
1938 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
1941 filename =
call->func->op_array.filename;
1943 if (
EG(opline_before_exception)) {
1944 lineno =
EG(opline_before_exception)->lineno;
1946 lineno =
call->func->op_array.line_end;
1949 lineno =
call->opline->lineno;
1952 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
1954 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
1955 if (prev_stack_frame) {
1974 const zend_op *op_data = opline + 1;
1980 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_ARGS), &tmp, 1);
1992 filename =
prev->func->op_array.filename;
1994 if (
EG(opline_before_exception)) {
1995 lineno =
EG(opline_before_exception)->lineno;
1997 lineno =
prev->func->op_array.line_end;
2000 lineno =
prev->opline->lineno;
2003 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
2005 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
2026 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
2028 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
2037 if (!fake_frame &&
func->common.function_name) {
2039 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
2044 if (
func->common.scope) {
2051 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_CLASS), &tmp, 1);
2054 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_OBJECT), &tmp, 1);
2058 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_TYPE), &tmp, 1);
2059 }
else if (
func->common.scope) {
2061 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_CLASS), &tmp, 1);
2063 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_TYPE), &tmp, 1);
2069 debug_backtrace_get_args(
call, &tmp);
2070 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_ARGS), &tmp, 1);
2074 bool build_filename_arg = 1;
2076 uint32_t include_kind = 0;
2078 include_kind =
prev->opline->extended_value;
2081 switch (include_kind) {
2083 pseudo_function_name =
ZSTR_KNOWN(ZEND_STR_EVAL);
2084 build_filename_arg = 0;
2087 pseudo_function_name =
ZSTR_KNOWN(ZEND_STR_INCLUDE);
2090 pseudo_function_name =
ZSTR_KNOWN(ZEND_STR_REQUIRE);
2093 pseudo_function_name =
ZSTR_KNOWN(ZEND_STR_INCLUDE_ONCE);
2096 pseudo_function_name =
ZSTR_KNOWN(ZEND_STR_REQUIRE_ONCE);
2105 pseudo_function_name =
ZSTR_KNOWN(ZEND_STR_UNKNOWN);
2106 build_filename_arg = 0;
2110 if (build_filename_arg && include_filename) {
2121 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_ARGS), &arg_array, 1);
2125 _zend_hash_append_ex(stack_frame,
ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
2131 prev_stack_frame = stack_frame;
2143 include_filename = filename;
2175 lcname = zend_string_tolower(extension_name);
2198 lcname = zend_string_tolower(extension_name);
2199 module = zend_hash_find_ptr(&module_registry, lcname);
2202 module = zend_hash_str_find_ptr(&module_registry, "core", sizeof("core") - 1);
2209 if (module->functions) {
file_private const char ext[]
prev(array|object &$array)
foreach($dp as $el) foreach( $dp as $el) if( $pass2< 2) echo ""
PHP_JSON_API size_t int options
unsigned char key[REFLECTION_KEY_LEN]
zval * default_static_members_table
HashTable properties_info
int default_properties_count
zend_class_entry * parent
zend_execute_data * prev_execute_data
struct _zend_module_entry * module
const zend_object_handlers * handlers
zend_string * function_name
struct _zend_function::@236135173067030250234125302313220025134003177336 common
zend_internal_function internal_function
ZEND_API ZEND_COLD void zend_error_zstr_at(int orig_type, zend_string *error_filename, uint32_t error_lineno, zend_string *message)
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API zend_class_entry * zend_standard_class_def
ZEND_API ZEND_COLD void zend_error(int type, const char *format,...)
ZEND_API zend_write_func_t zend_write
#define INTERNAL_FUNCTION_PARAMETERS
#define DEBUG_BACKTRACE_IGNORE_ARGS
#define DEBUG_BACKTRACE_PROVIDE_OBJECT
#define ZEND_WRITE(str, str_len)
#define INTERNAL_FUNCTION_PARAM_PASSTHRU
ZEND_API ZEND_COLD void zend_class_redeclaration_error_ex(int type, zend_string *new_name, zend_class_entry *old_ce)
ZEND_API zend_result zend_update_class_constants(zend_class_entry *class_type)
ZEND_API zval * zend_read_property_ex(zend_class_entry *scope, zend_object *object, zend_string *name, bool silent, zval *rv)
ZEND_API const char * zend_zval_value_name(const zval *arg)
ZEND_API void add_assoc_bool_ex(zval *arg, const char *key, size_t key_len, bool b)
ZEND_API zend_result zend_register_class_alias_ex(const char *name, size_t name_len, zend_class_entry *ce, bool persistent)
ZEND_API HashTable module_registry
ZEND_API zend_result object_init_ex(zval *arg, zend_class_entry *class_type)
ZEND_API void add_assoc_double_ex(zval *arg, const char *key, size_t key_len, double d)
ZEND_API zend_result zend_parse_parameters(uint32_t num_args, const char *type_spec,...)
ZEND_API void add_assoc_long_ex(zval *arg, const char *key, size_t key_len, zend_long n)
ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *format,...)
ZEND_API ZEND_COLD void zend_argument_type_error(uint32_t arg_num, const char *format,...)
ZEND_API zend_result add_next_index_string(zval *arg, const char *str)
ZEND_API zend_result add_next_index_str(zval *arg, zend_string *str)
#define RETURN_COPY_DEREF(zv)
struct _zend_fcall_info_cache zend_fcall_info_cache
#define CE_DEFAULT_PROPERTIES_TABLE(ce)
#define RETURN_STRINGL(s, l)
#define ZEND_PARSE_PARAMETERS_END()
#define Z_PARAM_RESOURCE(dest)
#define ZEND_PARSE_PARAMETERS_NONE()
#define ZEND_MINIT_FUNCTION
#define array_init_size(arg, size)
#define ZEND_FCI_INITIALIZED(fci)
#define Z_PARAM_STR(dest)
#define ZEND_PARSE_PARAMETERS_START(min_num_args, max_num_args)
#define Z_PARAM_LONG(dest)
struct _zend_fcall_info zend_fcall_info
#define Z_PARAM_OBJ(dest)
#define Z_PARAM_LONG_OR_NULL(dest, is_null)
#define Z_PARAM_STR_OR_LONG(dest_str, dest_long)
#define Z_PARAM_OBJ_OR_CLASS_NAME(dest)
#define Z_PARAM_BOOL(dest)
#define RETURN_EMPTY_ARRAY()
ZEND_API zend_array * zend_rebuild_symbol_table(void)
ZEND_API void zend_call_known_function(zend_function *fn, zend_object *object, zend_class_entry *called_scope, zval *retval_ptr, uint32_t param_count, zval *params, HashTable *named_params)
#define Z_PARAM_ZVAL(dest)
#define ZVAL_STRINGL(z, s, l)
#define Z_PARAM_FUNC_OR_NULL(dest_fci, dest_fcc)
#define ZEND_FUNCTION(name)
#define RETURN_STR_COPY(s)
ZEND_API size_t zend_mm_gc(zend_mm_heap *heap)
ZEND_API zend_mm_heap * zend_mm_get_heap(void)
#define ecalloc(nmemb, size)
#define ALLOC_HASHTABLE(ht)
ZEND_API zend_class_entry * zend_ce_sensitive_parameter_value
ZEND_API zend_attribute * zend_get_parameter_attribute_str(HashTable *attributes, const char *str, size_t len, uint32_t offset)
struct _zend_attribute zend_attribute
zend_result zend_startup_builtin_functions(void)
ZEND_API void zend_fetch_debug_backtrace(zval *return_value, int skip_last, int options, int limit)
method_exists($object_or_class, string $method)
property_exists($object_or_class, string $property)
is_subclass_of(mixed $object_or_class, string $class, bool $allow_string=true)
get_declared_interfaces()
trigger_error(string $message, int $error_level=E_USER_NOTICE)
get_defined_constants(bool $categorize=false)
function_exists(string $function)
debug_backtrace(int $options=DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit=0)
is_a(mixed $object_or_class, string $class, bool $allow_string=false)
define(string $constant_name, mixed $value, bool $case_insensitive=false)
get_extension_funcs(string $extension)
get_class_methods(object|string $object_or_class)
get_resources(?string $type=null)
error_reporting(?int $error_level=null)
set_error_handler(?callable $callback, int $error_levels=E_ALL)
debug_print_backtrace(int $options=0, int $limit=0)
get_resource_id($resource)
restore_exception_handler()
strncmp(string $string1, string $string2, int $length)
class_alias(string $class, string $alias, bool $autoload=true)
get_resource_type($resource)
get_loaded_extensions(bool $zend_extensions=false)
trait_exists(string $trait, bool $autoload=true)
defined(string $constant_name)
class_exists(string $class, bool $autoload=true)
func_get_arg(int $position)
set_exception_handler(?callable $callback)
get_defined_functions(bool $exclude_disabled=true)
enum_exists(string $enum, bool $autoload=true)
get_class(object $object=UNKNOWN)
get_class_vars(string $class)
get_object_vars(object $object)
get_parent_class(object|string $object_or_class=UNKNOWN)
interface_exists(string $interface, bool $autoload=true)
exit(string|int $status=0)
get_mangled_object_vars(object $object)
extension_loaded(string $extension)
strcmp(string $string1, string $string2)
ZEND_API zend_class_entry * zend_ce_closure
zend_string_release_ex(func->internal_function.function_name, 0)
ZEND_API zend_result zend_unmangle_property_name_ex(const zend_string *name, const char **class_name, const char **prop_name, size_t *prop_len)
#define OBJ_PROP_TO_NUM(offset)
#define ZEND_USER_CODE(type)
#define ZEND_CALL_TOP_FUNCTION
#define ZEND_INTERNAL_FUNCTION
#define ZEND_FETCH_CLASS_NO_AUTOLOAD
#define ZEND_USER_FUNCTION
#define ZEND_CALL_HAS_SYMBOL_TABLE
#define ZEND_ACC_INTERFACE
#define ZEND_ACC_CALL_VIA_TRAMPOLINE
#define ZEND_CALL_GENERATOR
struct _zend_property_info zend_property_info
#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS
#define ZEND_ACC_CONSTANTS_UPDATED
#define ZEND_INCLUDE_ONCE
#define ZEND_CALL_NUM_ARGS(call)
#define ZEND_CALL_INFO(call)
#define ZEND_CALL_KIND(call)
#define ZEND_REQUIRE_ONCE
#define ZEND_ACC_VARIADIC
#define ZEND_FETCH_CLASS_SILENT
#define ZEND_INVOKE_FUNC_NAME
#define ZEND_ACC_PROTECTED
#define ZEND_CALL_VAR_NUM(call, n)
#define ZEND_CALL_ARG(call, n)
#define strncasecmp(s1, s2, n)
#define strcasecmp(s1, s2)
ZEND_API zval * zend_get_constant_ex(zend_string *cname, zend_class_entry *scope, uint32_t flags)
ZEND_API zend_result zend_register_constant(zend_constant *c)
#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number)
#define ZEND_CONSTANT_MODULE_NUMBER(c)
struct _zend_constant zend_constant
#define PHP_USER_CONSTANT
ZEND_API void zend_register_default_classes(void)
#define E_USER_DEPRECATED
ZEND_API zend_string * zend_trace_to_string(HashTable *trace, bool include_main)
ZEND_API ZEND_COLD void zend_throw_unwind_exit(void)
ZEND_API zval * zend_get_zval_ptr(const zend_op *opline, int op_type, const znode_op *node, const zend_execute_data *execute_data)
ZEND_API zend_class_entry * zend_get_called_scope(zend_execute_data *ex)
ZEND_API zend_class_entry * zend_lookup_class(zend_string *name)
ZEND_API uint32_t zend_get_executed_lineno(void)
ZEND_API zend_class_entry * zend_get_executed_scope(void)
ZEND_API zend_string * zend_get_executed_filename_ex(void)
ZEND_API zend_result ZEND_FASTCALL zval_update_constant_ex(zval *pp, zend_class_entry *scope)
ZEND_API zend_class_entry * zend_lookup_class_ex(zend_string *name, zend_string *lcname, uint32_t flags)
ZEND_API zend_llist zend_extensions
struct _zend_extension zend_extension
union _zend_function zend_function
#define Z_FLF_PARAM_ZVAL(arg_num, dest)
#define ZEND_FLF_NUM_ARGS(opcode)
#define ZEND_OP_IS_FRAMELESS_ICALL(opcode)
#define Z_FLF_PARAM_BOOL(arg_num, dest)
#define Z_FLF_PARAM_STR(arg_num, dest, tmp)
#define ZEND_FRAMELESS_FUNCTION(name, arity)
#define ZEND_FLF_FUNC(opline)
#define Z_FLF_PARAM_FREE_STR(arg_num, tmp)
ZEND_API int(* gc_collect_cycles)(void)
ZEND_API void zend_gc_get_status(zend_gc_status *status)
struct _zend_gc_status zend_gc_status
ZEND_API zend_execute_data * zend_generator_check_placeholder_frame(zend_execute_data *ptr)
struct _zend_ini_entry zend_ini_entry
ZEND_API HashTable *ZEND_FASTCALL zend_proptable_to_symtable(HashTable *ht, bool always_duplicate)
ZEND_API void ZEND_FASTCALL zend_hash_real_init_packed(HashTable *ht)
ZEND_API zval *ZEND_FASTCALL zend_hash_next_index_insert_new(HashTable *ht, zval *pData)
ZEND_API zval *ZEND_FASTCALL zend_hash_index_add(HashTable *ht, zend_ulong h, zval *pData)
ZEND_API zval *ZEND_FASTCALL zend_hash_index_add_new(HashTable *ht, zend_ulong h, zval *pData)
ZEND_API zval *ZEND_FASTCALL zend_hash_add_new(HashTable *ht, zend_string *key, zval *pData)
ZEND_API zval *ZEND_FASTCALL zend_hash_find_known_hash(const HashTable *ht, const zend_string *key)
ZEND_API void ZEND_FASTCALL zend_array_destroy(HashTable *ht)
ZEND_API zval *ZEND_FASTCALL zend_hash_str_add_new(HashTable *ht, const char *str, size_t len, zval *pData)
ZEND_API HashTable *ZEND_FASTCALL zend_array_dup(HashTable *source)
ZEND_API void ZEND_FASTCALL zend_hash_real_init_mixed(HashTable *ht)
ZEND_API zend_result ZEND_FASTCALL zend_hash_del(HashTable *ht, zend_string *key)
#define ZEND_HASH_FILL_GROW()
#define zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent)
#define ZEND_HASH_MAP_FOREACH_PTR(ht, _ptr)
#define ZEND_HASH_FILL_PACKED(ht)
#define ZEND_HASH_FILL_SET(_val)
#define ZEND_HASH_FILL_END()
#define ZEND_HASH_FILL_SET_NULL()
#define zend_new_array(size)
#define ZEND_HASH_FOREACH_KEY_VAL(ht, _h, _key, _val)
#define ZEND_HASH_MAP_FOREACH_STR_KEY(ht, _key)
#define ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(ht, _key, _ptr)
#define ZEND_HASH_FOREACH_END()
#define ZEND_HASH_FILL_NEXT()
#define ZVAL_EMPTY_ARRAY(z)
#define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(ht, _key, _val)
#define ZEND_HASH_FOREACH_VAL(ht, _val)
#define ZEND_HASH_FILL_SET_STR_COPY(_val)
ZEND_API zend_result zend_alter_ini_entry_chars(zend_string *name, const char *value, size_t value_length, int modify_type, int stage)
#define ZEND_INI_STAGE_RUNTIME
ZEND_API int zend_fetch_list_dtor_id(const char *type_name)
const char * zend_rsrc_list_get_rsrc_type(zend_resource *res)
ZEND_API void zend_llist_apply_with_argument(zend_llist *l, llist_apply_with_arg_func_t func, void *arg)
void(* llist_apply_with_arg_func_t)(void *data, void *arg)
struct _zend_string zend_string
#define STANDARD_MODULE_HEADER
struct _zend_module_entry zend_module_entry
#define STANDARD_MODULE_PROPERTIES
ZEND_API zend_result zend_check_property_access(const zend_object *zobj, zend_string *prop_info_name, bool is_dynamic)
ZEND_API HashTable * zend_get_properties_for(zval *obj, zend_prop_purpose purpose)
ZEND_API HashTable * zend_get_properties_no_lazy_init(zend_object *zobj)
ZEND_API zend_string * zend_std_get_class_name(const zend_object *zobj)
ZEND_API bool zend_check_protected(const zend_class_entry *ce, const zend_class_entry *scope)
ZEND_API const zend_object_handlers std_object_handlers
#define zend_release_properties(ht)
@ ZEND_PROP_PURPOSE_GET_OBJECT_VARS
#define zend_free_trampoline(func)
ZEND_API int ZEND_FASTCALL zend_binary_strcasecmp(const char *s1, size_t len1, const char *s2, size_t len2)
ZEND_API zend_string *ZEND_FASTCALL zend_long_to_str(zend_long num)
ZEND_API int ZEND_FASTCALL zend_binary_strncmp(const char *s1, size_t len1, const char *s2, size_t len2, size_t length)
ZEND_API int ZEND_FASTCALL zend_binary_strcmp(const char *s1, size_t len1, const char *s2, size_t len2)
ZEND_API char *ZEND_FASTCALL zend_str_tolower_copy(char *dest, const char *source, size_t length)
ZEND_API int ZEND_FASTCALL zend_binary_strncasecmp(const char *s1, size_t len1, const char *s2, size_t len2, size_t length)
#define EXPECTED(condition)
#define UNEXPECTED(condition)
struct _zend_array zend_array
struct _zend_class_entry zend_class_entry
struct _zend_object zend_object
ZEND_API int zend_stack_push(zend_stack *stack, const void *element)
ZEND_API void * zend_stack_top(const zend_stack *stack)
ZEND_API int zend_stack_int_top(const zend_stack *stack)
ZEND_API bool zend_stack_is_empty(const zend_stack *stack)
ZEND_API void zend_stack_del_top(zend_stack *stack)
#define ZSTR_INIT_LITERAL(s, persistent)
#define zend_string_equals_literal(str, literal)
#define zend_string_equals_literal_ci(str, c)
#define Z_OBJ_HANDLER_P(zv_p, hf)
#define GC_PROTECT_RECURSION(p)
#define Z_ISREF_P(zval_p)
#define Z_TRY_ADDREF_P(pz)
#define Z_REFVAL_P(zval_p)
#define Z_ISUNDEF_P(zval_p)
#define Z_ARRVAL_P(zval_p)
#define Z_OPT_REFCOUNTED_P(zval_p)
#define Z_REFCOUNTED_P(zval_p)
#define ZVAL_STR_COPY(z, s)
struct _zend_array HashTable
#define ZVAL_COPY_OR_DUP(z, v)
#define Z_OBJ_HT_P(zval_p)
#define Z_TYPE_INFO_P(zval_p)
#define ZSTR_HAS_CE_CACHE(s)
#define Z_OBJCE_P(zval_p)
#define ZSTR_GET_CE_CACHE(s)
#define Z_RES_HANDLE_P(zval_p)
#define GC_UNPROTECT_RECURSION(p)
#define Z_INDIRECT_P(zval_p)
#define ZVAL_OBJ_COPY(z, o)
ZEND_RESULT_CODE zend_result
#define SEPARATE_ARRAY(zv)
#define GC_IS_RECURSIVE(p)
#define ZVAL_INTERNED_STR(z, s)
struct _zend_execute_data zend_execute_data
#define Z_RES_TYPE_P(zval_p)
#define ZVAL_COPY_VALUE(z, v)
#define ZVAL_DEINDIRECT(z)
#define Z_IS_RECURSIVE_P(zv)
#define Z_OPT_TYPE_P(zval_p)
ZEND_API void zval_ptr_dtor(zval *zval_ptr)
zend_property_info * prop_info
#define ZEND_INCLUDE_OR_EVAL
#define ZEND_HANDLE_EXCEPTION