diff --git a/Zend/tests/foreach_shadowed_property.phpt b/Zend/tests/foreach_shadowed_property.phpt new file mode 100644 index 00000000000..7fb20141f42 --- /dev/null +++ b/Zend/tests/foreach_shadowed_property.phpt @@ -0,0 +1,28 @@ +--TEST-- +Foreach over object with shadowed private property +--FILE-- + $v) { + echo "$k => $v\n"; + } + var_dump(get_object_vars($this)); + } +} +class Test2 extends Test { + public $prop = "Test2"; +} + +(new Test2)->run(); + +?> +--EXPECT-- +prop => Test +array(1) { + ["prop"]=> + string(4) "Test" +} diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 6773f997043..ccc4ebe7777 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -558,6 +558,7 @@ ZEND_API int zend_check_property_access(zend_object *zobj, zend_string *prop_inf } else { ZEND_ASSERT(property_info->flags & ZEND_ACC_PROTECTED); } + return SUCCESS; } else { property_info = zend_get_property_info(zobj->ce, prop_info_name, 1); if (property_info == NULL) { @@ -565,9 +566,8 @@ ZEND_API int zend_check_property_access(zend_object *zobj, zend_string *prop_inf } else if (property_info == ZEND_WRONG_PROPERTY_INFO) { return FAILURE; } - ZEND_ASSERT(property_info->flags & ZEND_ACC_PUBLIC); + return (property_info->flags & ZEND_ACC_PUBLIC) ? SUCCESS : FAILURE; } - return SUCCESS; } /* }}} */