]> granicus.if.org Git - php/commitdiff
Make internal non-static methods to be executed in context of class. Set EG(scope...
authorDmitry Stogov <dmitry@zend.com>
Thu, 23 Apr 2015 00:41:50 +0000 (03:41 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 23 Apr 2015 00:41:50 +0000 (03:41 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt

index 16d3a23a16878ae341da394ebbbf7188008164e2..9a50c9b7d538400396ac3f09ca250418104d6860 100644 (file)
@@ -3626,13 +3626,7 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY)
 
                if (fbc->common.scope) {
                        should_change_scope = 1;
-                       /* TODO: we don't set scope if we call an object method ??? */
-                       /* See: ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt */
-#if 1
-                       EG(scope) = object ? NULL : fbc->common.scope;
-#else
                        EG(scope) = fbc->common.scope;
-#endif
                } else {
                        call->called_scope = EX(called_scope);
                        Z_OBJ(call->This) = Z_OBJ(EX(This));
@@ -7788,8 +7782,6 @@ ZEND_VM_HANDLER(158, ZEND_CALL_TRAMPOLINE, ANY, ANY)
 
                ZEND_ASSERT(!(fbc->common.fn_flags & ZEND_ACC_GENERATOR));
 
-               /* This must be already set on invokation of trampoline function */
-               /*EG(scope) = fbc->common.scope;*/
                call->symbol_table = NULL;
                i_init_func_execute_data(call, &fbc->op_array,
                                ret, (fbc->common.fn_flags & ZEND_ACC_STATIC) == 0);
@@ -7805,7 +7797,6 @@ ZEND_VM_HANDLER(158, ZEND_CALL_TRAMPOLINE, ANY, ANY)
 
                ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
 
-               EG(scope) = object ? NULL : fbc->common.scope;
                EG(current_execute_data) = call;
 
                if (fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) {
index 0472feb379035a86d394b4af50e1072a40512057..9f224ee0ddc60013aed07f535daa1ad0f1a43d5b 100644 (file)
@@ -783,13 +783,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPC
 
                if (fbc->common.scope) {
                        should_change_scope = 1;
-                       /* TODO: we don't set scope if we call an object method ??? */
-                       /* See: ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt */
-#if 1
-                       EG(scope) = object ? NULL : fbc->common.scope;
-#else
                        EG(scope) = fbc->common.scope;
-#endif
                } else {
                        call->called_scope = EX(called_scope);
                        Z_OBJ(call->This) = Z_OBJ(EX(This));
@@ -1814,8 +1808,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CALL_TRAMPOLINE_SPEC_HANDLER(Z
 
                ZEND_ASSERT(!(fbc->common.fn_flags & ZEND_ACC_GENERATOR));
 
-               /* This must be already set on invokation of trampoline function */
-               /*EG(scope) = fbc->common.scope;*/
                call->symbol_table = NULL;
                i_init_func_execute_data(call, &fbc->op_array,
                                ret, (fbc->common.fn_flags & ZEND_ACC_STATIC) == 0);
@@ -1831,7 +1823,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CALL_TRAMPOLINE_SPEC_HANDLER(Z
 
                ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
 
-               EG(scope) = object ? NULL : fbc->common.scope;
                EG(current_execute_data) = call;
 
                if (fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) {
index f7f3ce06bce0b3fe65028561f476783d346f96d1..c8cdee6f69d72f70b6d39c7c10aae6e42c9245d4 100644 (file)
@@ -102,7 +102,7 @@ bool(false)
 Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error: no array or string given in %s on line %d
 bool(false)
 
-Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error: cannot access self:: when no class scope is active in %s on line %d
+Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error: class 'PDOStatement' does not have a method 'foo' in %s on line %d
 bool(false)
 array(2) {
   [0]=>