mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-7.4'
This commit is contained in:
commit
13f675b858
7 changed files with 15 additions and 14 deletions
|
@ -2777,7 +2777,7 @@ static int zend_is_callable_check_class(zend_string *name, zend_class_entry *sco
|
||||||
*strict_class = 1;
|
*strict_class = 1;
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
} else if ((ce = zend_lookup_class_ex(name, NULL, 1)) != NULL) {
|
} else if ((ce = zend_lookup_class(name)) != NULL) {
|
||||||
zend_class_entry *scope;
|
zend_class_entry *scope;
|
||||||
zend_execute_data *ex = EG(current_execute_data);
|
zend_execute_data *ex = EG(current_execute_data);
|
||||||
|
|
||||||
|
|
|
@ -980,7 +980,7 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool only_subclass) /*
|
||||||
if (!only_subclass && EXPECTED(zend_string_equals(instance_ce->name, class_name))) {
|
if (!only_subclass && EXPECTED(zend_string_equals(instance_ce->name, class_name))) {
|
||||||
retval = 1;
|
retval = 1;
|
||||||
} else {
|
} else {
|
||||||
ce = zend_lookup_class_ex(class_name, NULL, 0);
|
ce = zend_lookup_class_ex(class_name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
|
||||||
if (!ce) {
|
if (!ce) {
|
||||||
retval = 0;
|
retval = 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1423,7 +1423,7 @@ ZEND_FUNCTION(class_alias)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ce = zend_lookup_class_ex(class_name, NULL, autoload);
|
ce = zend_lookup_class_ex(class_name, NULL, !autoload ? ZEND_FETCH_CLASS_NO_AUTOLOAD : 0);
|
||||||
|
|
||||||
if (ce) {
|
if (ce) {
|
||||||
if (ce->type == ZEND_USER_CLASS) {
|
if (ce->type == ZEND_USER_CLASS) {
|
||||||
|
|
|
@ -205,7 +205,7 @@ ZEND_METHOD(Closure, bind)
|
||||||
zend_string *class_name = zval_get_tmp_string(scope_arg, &tmp_class_name);
|
zend_string *class_name = zval_get_tmp_string(scope_arg, &tmp_class_name);
|
||||||
if (zend_string_equals_literal(class_name, "static")) {
|
if (zend_string_equals_literal(class_name, "static")) {
|
||||||
ce = closure->func.common.scope;
|
ce = closure->func.common.scope;
|
||||||
} else if ((ce = zend_lookup_class_ex(class_name, NULL, 1)) == NULL) {
|
} else if ((ce = zend_lookup_class(class_name)) == NULL) {
|
||||||
zend_error(E_WARNING, "Class '%s' not found", ZSTR_VAL(class_name));
|
zend_error(E_WARNING, "Class '%s' not found", ZSTR_VAL(class_name));
|
||||||
zend_string_release_ex(class_name, 0);
|
zend_string_release_ex(class_name, 0);
|
||||||
RETURN_NULL();
|
RETURN_NULL();
|
||||||
|
|
|
@ -6280,7 +6280,8 @@ zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
|
||||||
/* We currently don't early-bind classes that implement interfaces or use traits */
|
/* We currently don't early-bind classes that implement interfaces or use traits */
|
||||||
&& !(ce->ce_flags & (ZEND_ACC_IMPLEMENT_INTERFACES|ZEND_ACC_IMPLEMENT_TRAITS))) {
|
&& !(ce->ce_flags & (ZEND_ACC_IMPLEMENT_INTERFACES|ZEND_ACC_IMPLEMENT_TRAITS))) {
|
||||||
if (extends_ast) {
|
if (extends_ast) {
|
||||||
zend_class_entry *parent_ce = zend_lookup_class_ex(ce->parent_name, NULL, 0);
|
zend_class_entry *parent_ce = zend_lookup_class_ex(
|
||||||
|
ce->parent_name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
|
||||||
|
|
||||||
if (parent_ce
|
if (parent_ce
|
||||||
&& !(CG(compiler_options) & ZEND_COMPILE_PRELOAD) /* delay inheritance till preloading */
|
&& !(CG(compiler_options) & ZEND_COMPILE_PRELOAD) /* delay inheritance till preloading */
|
||||||
|
|
|
@ -41,7 +41,7 @@ ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value);
|
||||||
ZEND_API void execute_ex(zend_execute_data *execute_data);
|
ZEND_API void execute_ex(zend_execute_data *execute_data);
|
||||||
ZEND_API void execute_internal(zend_execute_data *execute_data, zval *return_value);
|
ZEND_API void execute_internal(zend_execute_data *execute_data, zval *return_value);
|
||||||
ZEND_API zend_class_entry *zend_lookup_class(zend_string *name);
|
ZEND_API zend_class_entry *zend_lookup_class(zend_string *name);
|
||||||
ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string *lcname, int use_autoload);
|
ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string *lcname, uint32_t flags);
|
||||||
ZEND_API zend_class_entry *zend_get_called_scope(zend_execute_data *ex);
|
ZEND_API zend_class_entry *zend_get_called_scope(zend_execute_data *ex);
|
||||||
ZEND_API zend_object *zend_get_this_object(zend_execute_data *ex);
|
ZEND_API zend_object *zend_get_this_object(zend_execute_data *ex);
|
||||||
ZEND_API int zend_eval_string(char *str, zval *retval_ptr, char *string_name);
|
ZEND_API int zend_eval_string(char *str, zval *retval_ptr, char *string_name);
|
||||||
|
|
|
@ -832,7 +832,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache) /
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string *key, int use_autoload) /* {{{ */
|
ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string *key, uint32_t flags) /* {{{ */
|
||||||
{
|
{
|
||||||
zend_class_entry *ce = NULL;
|
zend_class_entry *ce = NULL;
|
||||||
zval args[1], *zv;
|
zval args[1], *zv;
|
||||||
|
@ -871,7 +871,7 @@ ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string *
|
||||||
/* The compiler is not-reentrant. Make sure we __autoload() only during run-time
|
/* The compiler is not-reentrant. Make sure we __autoload() only during run-time
|
||||||
* (doesn't impact functionality of __autoload()
|
* (doesn't impact functionality of __autoload()
|
||||||
*/
|
*/
|
||||||
if (!use_autoload || zend_is_compiling()) {
|
if ((flags & ZEND_FETCH_CLASS_NO_AUTOLOAD) || zend_is_compiling()) {
|
||||||
if (!key) {
|
if (!key) {
|
||||||
zend_string_release_ex(lc_name, 0);
|
zend_string_release_ex(lc_name, 0);
|
||||||
}
|
}
|
||||||
|
@ -946,7 +946,7 @@ ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string *
|
||||||
|
|
||||||
ZEND_API zend_class_entry *zend_lookup_class(zend_string *name) /* {{{ */
|
ZEND_API zend_class_entry *zend_lookup_class(zend_string *name) /* {{{ */
|
||||||
{
|
{
|
||||||
return zend_lookup_class_ex(name, NULL, 1);
|
return zend_lookup_class_ex(name, NULL, 0);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
@ -1337,8 +1337,8 @@ check_fetch_type:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fetch_type & ZEND_FETCH_CLASS_NO_AUTOLOAD) {
|
if (fetch_type & ZEND_FETCH_CLASS_NO_AUTOLOAD) {
|
||||||
return zend_lookup_class_ex(class_name, NULL, 0);
|
return zend_lookup_class_ex(class_name, NULL, fetch_type);
|
||||||
} else if ((ce = zend_lookup_class_ex(class_name, NULL, 1)) == NULL) {
|
} else if ((ce = zend_lookup_class_ex(class_name, NULL, fetch_type)) == NULL) {
|
||||||
if (!(fetch_type & ZEND_FETCH_CLASS_SILENT) && !EG(exception)) {
|
if (!(fetch_type & ZEND_FETCH_CLASS_SILENT) && !EG(exception)) {
|
||||||
if (fetch_sub_type == ZEND_FETCH_CLASS_INTERFACE) {
|
if (fetch_sub_type == ZEND_FETCH_CLASS_INTERFACE) {
|
||||||
zend_throw_or_error(fetch_type, NULL, "Interface '%s' not found", ZSTR_VAL(class_name));
|
zend_throw_or_error(fetch_type, NULL, "Interface '%s' not found", ZSTR_VAL(class_name));
|
||||||
|
@ -1359,8 +1359,8 @@ zend_class_entry *zend_fetch_class_by_name(zend_string *class_name, zend_string
|
||||||
zend_class_entry *ce;
|
zend_class_entry *ce;
|
||||||
|
|
||||||
if (fetch_type & ZEND_FETCH_CLASS_NO_AUTOLOAD) {
|
if (fetch_type & ZEND_FETCH_CLASS_NO_AUTOLOAD) {
|
||||||
return zend_lookup_class_ex(class_name, key, 0);
|
return zend_lookup_class_ex(class_name, key, fetch_type);
|
||||||
} else if ((ce = zend_lookup_class_ex(class_name, key, 1)) == NULL) {
|
} else if ((ce = zend_lookup_class_ex(class_name, key, fetch_type)) == NULL) {
|
||||||
if (fetch_type & ZEND_FETCH_CLASS_SILENT) {
|
if (fetch_type & ZEND_FETCH_CLASS_SILENT) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,7 +204,7 @@ static zend_class_entry *lookup_class(const zend_function *fe, zend_string *name
|
||||||
return ce;
|
return ce;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ce = zend_lookup_class_ex(name, NULL, /* autoload */ 0);
|
ce = zend_lookup_class_ex(name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
|
||||||
if (ce && class_visible(ce)) {
|
if (ce && class_visible(ce)) {
|
||||||
return ce;
|
return ce;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue