mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08:55 +02:00
- Hopefully fix problem with __autoload not working well with inherited classes.
- There might still be some weird situations I haven't thought of.
This commit is contained in:
parent
7f6c2da50a
commit
f8ebfe7c51
1 changed files with 9 additions and 1 deletions
|
@ -1671,6 +1671,7 @@ ZEND_API int do_bind_function_or_class(zend_op *opline, HashTable *function_tabl
|
|||
int parent_name_length;
|
||||
char *class_name, *parent_name;
|
||||
int found_ce;
|
||||
int retval;
|
||||
|
||||
found_ce = zend_hash_find(class_table, opline->op1.u.constant.value.str.val, opline->op1.u.constant.value.str.len, (void **) &pce);
|
||||
|
||||
|
@ -1692,7 +1693,14 @@ ZEND_API int do_bind_function_or_class(zend_op *opline, HashTable *function_tabl
|
|||
/* Obtain parent class */
|
||||
parent_name_length = class_name - opline->op2.u.constant.value.str.val - 1;
|
||||
parent_name = estrndup(opline->op2.u.constant.value.str.val, parent_name_length);
|
||||
if (zend_hash_find(class_table, parent_name, parent_name_length+1, (void **) &parent_pce)==FAILURE) {
|
||||
if (!compile_time) {
|
||||
TSRMLS_FETCH();
|
||||
|
||||
retval = zend_lookup_class(parent_name, parent_name_length, &parent_pce TSRMLS_CC);
|
||||
} else {
|
||||
retval = zend_hash_find(class_table, parent_name, parent_name_length+1, (void **) &parent_pce);
|
||||
}
|
||||
if (retval == FAILURE) {
|
||||
if (!compile_time) {
|
||||
zend_error(E_ERROR, "Class %s: Cannot inherit from undefined class %s", class_name, parent_name);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue