Lines Matching refs:fcc

697 				zend_fcall_info_cache *fcc = va_arg(*va, zend_fcall_info_cache *);  in zend_parse_arg_impl()  local
702 fcc->initialized = 0; in zend_parse_arg_impl()
706 if (zend_fcall_info_init(arg, 0, fci, fcc, NULL, &is_callable_error) == SUCCESS) { in zend_parse_arg_impl()
2824 …k_class(zend_string *name, zend_class_entry *scope, zend_fcall_info_cache *fcc, int *strict_class,… in zend_is_callable_check_class() argument
2840 fcc->called_scope = zend_get_called_scope(EG(current_execute_data)); in zend_is_callable_check_class()
2841 fcc->calling_scope = scope; in zend_is_callable_check_class()
2842 if (!fcc->object) { in zend_is_callable_check_class()
2843 fcc->object = zend_get_this_object(EG(current_execute_data)); in zend_is_callable_check_class()
2853 fcc->called_scope = zend_get_called_scope(EG(current_execute_data)); in zend_is_callable_check_class()
2854 fcc->calling_scope = scope->parent; in zend_is_callable_check_class()
2855 if (!fcc->object) { in zend_is_callable_check_class()
2856 fcc->object = zend_get_this_object(EG(current_execute_data)); in zend_is_callable_check_class()
2867 fcc->called_scope = called_scope; in zend_is_callable_check_class()
2868 fcc->calling_scope = called_scope; in zend_is_callable_check_class()
2869 if (!fcc->object) { in zend_is_callable_check_class()
2870 fcc->object = zend_get_this_object(EG(current_execute_data)); in zend_is_callable_check_class()
2883 fcc->calling_scope = ce; in zend_is_callable_check_class()
2884 if (scope && !fcc->object) { in zend_is_callable_check_class()
2889 instanceof_function(scope, fcc->calling_scope)) { in zend_is_callable_check_class()
2890 fcc->object = object; in zend_is_callable_check_class()
2891 fcc->called_scope = object->ce; in zend_is_callable_check_class()
2893 fcc->called_scope = fcc->calling_scope; in zend_is_callable_check_class()
2896 fcc->called_scope = fcc->object ? fcc->object->ce : fcc->calling_scope; in zend_is_callable_check_class()
2908 static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fcall_info_cache *fcc,… in zend_is_callable_check_func() argument
2910 zend_class_entry *ce_org = fcc->calling_scope; in zend_is_callable_check_func()
2925 fcc->calling_scope = NULL; in zend_is_callable_check_func()
2926 fcc->function_handler = NULL; in zend_is_callable_check_func()
2939 if (EXPECTED((fcc->function_handler = zend_hash_find_ptr(EG(function_table), lmname)) != NULL)) { in zend_is_callable_check_func()
2943 fcc->initialized = 1; in zend_is_callable_check_func()
2952 if ((fcc->function_handler = zend_hash_find_ptr(EG(function_table), lmname)) != NULL) { in zend_is_callable_check_func()
2954 fcc->initialized = 1; in zend_is_callable_check_func()
2988 if (!zend_is_callable_check_class(cname, scope, fcc, &strict_class, error)) { in zend_is_callable_check_func()
2994 ftable = &fcc->calling_scope->function_table; in zend_is_callable_check_func()
2995 if (ce_org && !instanceof_function(ce_org, fcc->calling_scope)) { in zend_is_callable_check_func()
2996 …, "class '%s' is not a subclass of '%s'", ZSTR_VAL(ce_org->name), ZSTR_VAL(fcc->calling_scope->nam… in zend_is_callable_check_func()
3005 fcc->calling_scope = ce_org; in zend_is_callable_check_func()
3016 fcc->calling_scope && in zend_is_callable_check_func()
3018 fcc->function_handler = fcc->calling_scope->constructor; in zend_is_callable_check_func()
3019 if (fcc->function_handler) { in zend_is_callable_check_func()
3022 } else if ((fcc->function_handler = zend_hash_find_ptr(ftable, lmname)) != NULL) { in zend_is_callable_check_func()
3024 if ((fcc->function_handler->op_array.fn_flags & ZEND_ACC_CHANGED) && in zend_is_callable_check_func()
3028 instanceof_function(fcc->function_handler->common.scope, scope)) { in zend_is_callable_check_func()
3034 fcc->function_handler = priv_fbc; in zend_is_callable_check_func()
3039 (fcc->calling_scope && in zend_is_callable_check_func()
3040 ((fcc->object && fcc->calling_scope->__call) || in zend_is_callable_check_func()
3041 (!fcc->object && fcc->calling_scope->__callstatic)))) { in zend_is_callable_check_func()
3042 if (fcc->function_handler->op_array.fn_flags & ZEND_ACC_PRIVATE) { in zend_is_callable_check_func()
3044 if (!zend_check_private(fcc->function_handler, fcc->object ? fcc->object->ce : scope, lmname)) { in zend_is_callable_check_func()
3046 fcc->function_handler = NULL; in zend_is_callable_check_func()
3049 } else if (fcc->function_handler->common.fn_flags & ZEND_ACC_PROTECTED) { in zend_is_callable_check_func()
3051 if (!zend_check_protected(fcc->function_handler->common.scope, scope)) { in zend_is_callable_check_func()
3053 fcc->function_handler = NULL; in zend_is_callable_check_func()
3060 if (fcc->object && fcc->calling_scope == ce_org) { in zend_is_callable_check_func()
3062 fcc->function_handler = zend_get_call_trampoline_func(ce_org, mname, 0); in zend_is_callable_check_func()
3065 } else if (fcc->object->handlers->get_method) { in zend_is_callable_check_func()
3066 fcc->function_handler = fcc->object->handlers->get_method(&fcc->object, mname, NULL); in zend_is_callable_check_func()
3067 if (fcc->function_handler) { in zend_is_callable_check_func()
3069 (!fcc->function_handler->common.scope || in zend_is_callable_check_func()
3070 !instanceof_function(ce_org, fcc->function_handler->common.scope))) { in zend_is_callable_check_func()
3071 if (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) { in zend_is_callable_check_func()
3072 if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION && in zend_is_callable_check_func()
3073 fcc->function_handler->common.function_name) { in zend_is_callable_check_func()
3074 zend_string_release(fcc->function_handler->common.function_name); in zend_is_callable_check_func()
3076 zend_free_trampoline(fcc->function_handler); in zend_is_callable_check_func()
3080 … call_via_handler = (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) != 0; in zend_is_callable_check_func()
3084 } else if (fcc->calling_scope) { in zend_is_callable_check_func()
3085 if (fcc->calling_scope->get_static_method) { in zend_is_callable_check_func()
3086 fcc->function_handler = fcc->calling_scope->get_static_method(fcc->calling_scope, mname); in zend_is_callable_check_func()
3088 fcc->function_handler = zend_std_get_static_method(fcc->calling_scope, mname, NULL); in zend_is_callable_check_func()
3090 if (fcc->function_handler) { in zend_is_callable_check_func()
3092 call_via_handler = (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) != 0; in zend_is_callable_check_func()
3093 if (call_via_handler && !fcc->object) { in zend_is_callable_check_func()
3096 instanceof_function(object->ce, fcc->calling_scope)) { in zend_is_callable_check_func()
3097 fcc->object = object; in zend_is_callable_check_func()
3105 if (fcc->calling_scope && !call_via_handler) { in zend_is_callable_check_func()
3106 if (fcc->function_handler->common.fn_flags & ZEND_ACC_ABSTRACT) { in zend_is_callable_check_func()
3108 …ror, 0, "cannot call abstract method %s::%s()", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->… in zend_is_callable_check_func()
3111 …r(NULL, "Cannot call abstract method %s::%s()", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->… in zend_is_callable_check_func()
3114 } else if (!fcc->object && !(fcc->function_handler->common.fn_flags & ZEND_ACC_STATIC)) { in zend_is_callable_check_func()
3117 if (fcc->function_handler->common.fn_flags & ZEND_ACC_ALLOW_STATIC) { in zend_is_callable_check_func()
3129 …tatic method %s::%s() %s be called statically", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->… in zend_is_callable_check_func()
3135 …tatic method %s::%s() %s be called statically", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->… in zend_is_callable_check_func()
3137 …tatic method %s::%s() %s be called statically", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->… in zend_is_callable_check_func()
3142 if (fcc->function_handler->op_array.fn_flags & ZEND_ACC_PRIVATE) { in zend_is_callable_check_func()
3144 … if (!zend_check_private(fcc->function_handler, fcc->object ? fcc->object->ce : scope, lmname)) { in zend_is_callable_check_func()
3149 …or, 0, "cannot access private method %s::%s()", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->… in zend_is_callable_check_func()
3153 } else if ((fcc->function_handler->common.fn_flags & ZEND_ACC_PROTECTED)) { in zend_is_callable_check_func()
3155 if (!zend_check_protected(fcc->function_handler->common.scope, scope)) { in zend_is_callable_check_func()
3160 …, 0, "cannot access protected method %s::%s()", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->… in zend_is_callable_check_func()
3168 if (fcc->calling_scope) { in zend_is_callable_check_func()
3169 …if (error) zend_spprintf(error, 0, "class '%s' does not have a method '%s'", ZSTR_VAL(fcc->calling… in zend_is_callable_check_func()
3177 if (fcc->object) { in zend_is_callable_check_func()
3178 fcc->called_scope = fcc->object->ce; in zend_is_callable_check_func()
3181 fcc->initialized = 1; in zend_is_callable_check_func()
3187 …ect, uint check_flags, zend_string **callable_name, zend_fcall_info_cache *fcc, char **error) /* {… in zend_is_callable_ex() argument
3195 if (fcc == NULL) { in zend_is_callable_ex()
3196 fcc = &fcc_local; in zend_is_callable_ex()
3202 fcc->initialized = 0; in zend_is_callable_ex()
3203 fcc->calling_scope = NULL; in zend_is_callable_ex()
3204 fcc->called_scope = NULL; in zend_is_callable_ex()
3205 fcc->function_handler = NULL; in zend_is_callable_ex()
3206 fcc->object = NULL; in zend_is_callable_ex()
3218 fcc->object = object; in zend_is_callable_ex()
3219 fcc->calling_scope = object->ce; in zend_is_callable_ex()
3223 …*callable_name = zend_string_alloc(ZSTR_LEN(fcc->calling_scope->name) + Z_STRLEN_P(callable) + siz… in zend_is_callable_ex()
3225 memcpy(ptr, ZSTR_VAL(fcc->calling_scope->name), ZSTR_LEN(fcc->calling_scope->name)); in zend_is_callable_ex()
3226 ptr += ZSTR_LEN(fcc->calling_scope->name); in zend_is_callable_ex()
3235 fcc->called_scope = fcc->calling_scope; in zend_is_callable_ex()
3239 ret = zend_is_callable_check_func(check_flags, callable, fcc, 0, error); in zend_is_callable_ex()
3240 if (fcc == &fcc_local && in zend_is_callable_ex()
3241 fcc->function_handler && in zend_is_callable_ex()
3242 ((fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) || in zend_is_callable_ex()
3243 fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY || in zend_is_callable_ex()
3244 fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION)) { in zend_is_callable_ex()
3245 if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION && in zend_is_callable_ex()
3246 fcc->function_handler->common.function_name) { in zend_is_callable_ex()
3247 zend_string_release(fcc->function_handler->common.function_name); in zend_is_callable_ex()
3249 zend_free_trampoline(fcc->function_handler); in zend_is_callable_ex()
3293 …if (!zend_is_callable_check_class(Z_STR_P(obj), zend_get_executed_scope(), fcc, &strict_class, err… in zend_is_callable_ex()
3303 fcc->calling_scope = Z_OBJCE_P(obj); /* TBFixed: what if it's overloaded? */ in zend_is_callable_ex()
3305 fcc->object = Z_OBJ_P(obj); in zend_is_callable_ex()
3310 …*callable_name = zend_string_alloc(ZSTR_LEN(fcc->calling_scope->name) + Z_STRLEN_P(method) + sizeo… in zend_is_callable_ex()
3312 memcpy(ptr, ZSTR_VAL(fcc->calling_scope->name), ZSTR_LEN(fcc->calling_scope->name)); in zend_is_callable_ex()
3313 ptr += ZSTR_LEN(fcc->calling_scope->name); in zend_is_callable_ex()
3320 fcc->called_scope = fcc->calling_scope; in zend_is_callable_ex()
3327 ret = zend_is_callable_check_func(check_flags, method, fcc, strict_class, error); in zend_is_callable_ex()
3328 if (fcc == &fcc_local && in zend_is_callable_ex()
3329 fcc->function_handler && in zend_is_callable_ex()
3330 ((fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) || in zend_is_callable_ex()
3331 fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY || in zend_is_callable_ex()
3332 fcc->function_handler->type == ZEND_OVERLOADED_FUNCTION)) { in zend_is_callable_ex()
3333 if (fcc->function_handler->type != ZEND_OVERLOADED_FUNCTION && in zend_is_callable_ex()
3334 fcc->function_handler->common.function_name) { in zend_is_callable_ex()
3335 zend_string_release(fcc->function_handler->common.function_name); in zend_is_callable_ex()
3337 zend_free_trampoline(fcc->function_handler); in zend_is_callable_ex()
3359 …& Z_OBJ_HANDLER_P(callable, get_closure)(callable, &fcc->calling_scope, &fcc->function_handler, &f… in zend_is_callable_ex()
3360 fcc->called_scope = fcc->calling_scope; in zend_is_callable_ex()
3368 fcc->initialized = 1; in zend_is_callable_ex()
3397 zend_fcall_info_cache fcc; in zend_make_callable() local
3399 if (zend_is_callable_ex(callable, NULL, IS_CALLABLE_STRICT, callable_name, &fcc, NULL)) { in zend_make_callable()
3400 if (Z_TYPE_P(callable) == IS_STRING && fcc.calling_scope) { in zend_make_callable()
3403 add_next_index_str(callable, zend_string_copy(fcc.calling_scope->name)); in zend_make_callable()
3404 add_next_index_str(callable, zend_string_copy(fcc.function_handler->common.function_name)); in zend_make_callable()
3406 if (fcc.function_handler && in zend_make_callable()
3407 ((fcc.function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) || in zend_make_callable()
3408 fcc.function_handler->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY || in zend_make_callable()
3409 fcc.function_handler->type == ZEND_OVERLOADED_FUNCTION)) { in zend_make_callable()
3410 if (fcc.function_handler->type != ZEND_OVERLOADED_FUNCTION) { in zend_make_callable()
3411 zend_string_release(fcc.function_handler->common.function_name); in zend_make_callable()
3413 zend_free_trampoline(fcc.function_handler); in zend_make_callable()
3421 … *callable, uint check_flags, zend_fcall_info *fci, zend_fcall_info_cache *fcc, zend_string **call… in zend_fcall_info_init() argument
3423 if (!zend_is_callable_ex(callable, NULL, check_flags, callable_name, fcc, error)) { in zend_fcall_info_init()
3428 fci->object = fcc->object; in zend_fcall_info_init()
3577 ZEND_API int zend_fcall_info_call(zend_fcall_info *fci, zend_fcall_info_cache *fcc, zval *retval_pt… in zend_fcall_info_call() argument
3587 result = zend_call_function(fci, fcc); in zend_fcall_info_call()