- MFH: Fixed bug #47254 (Wrong Reflection for extends class)

This commit is contained in:
Felipe Pena 2009-04-27 19:48:45 +00:00
parent 3d71223080
commit 9fa1e2d8a8
9 changed files with 396 additions and 395 deletions

View File

@ -1238,7 +1238,7 @@ static void reflection_method_factory(zend_class_entry *ce, zend_function *metho
MAKE_STD_ZVAL(name);
MAKE_STD_ZVAL(classname);
ZVAL_STRING(name, method->common.function_name, 1);
ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
ZVAL_STRINGL(classname, method->common.scope->name, method->common.scope->name_length, 1);
reflection_instantiate(reflection_method_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
intern->ptr = method;
@ -1281,7 +1281,7 @@ static void reflection_property_factory(zend_class_entry *ce, zend_property_info
MAKE_STD_ZVAL(name);
MAKE_STD_ZVAL(classname);
ZVAL_STRING(name, prop_name, 1);
ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
ZVAL_STRINGL(classname, prop->ce->name, prop->ce->name_length, 1);
reflection_instantiate(reflection_property_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
@ -2482,11 +2482,6 @@ ZEND_METHOD(reflection_method, __construct)
zval_dtor(&ztmp);
}
MAKE_STD_ZVAL(classname);
ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
lcname = zend_str_tolower_dup(name_str, name_len);
if (ce == zend_ce_closure && orig_obj && (name_len == sizeof(ZEND_INVOKE_FUNC_NAME)-1)
@ -2502,6 +2497,11 @@ ZEND_METHOD(reflection_method, __construct)
}
efree(lcname);
MAKE_STD_ZVAL(classname);
ZVAL_STRINGL(classname, mptr->common.scope->name, mptr->common.scope->name_length, 1);
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
MAKE_STD_ZVAL(name);
ZVAL_STRING(name, mptr->common.function_name, 1);
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
@ -4326,17 +4326,18 @@ ZEND_METHOD(reflection_property, __construct)
}
}
MAKE_STD_ZVAL(classname);
ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
MAKE_STD_ZVAL(classname);
MAKE_STD_ZVAL(propname);
if (dynam_prop == 0) {
zend_unmangle_property_name(property_info->name, property_info->name_length, &class_name, &prop_name);
ZVAL_STRINGL(classname, property_info->ce->name, property_info->ce->name_length, 1);
ZVAL_STRING(propname, prop_name, 1);
} else {
ZVAL_STRINGL(classname, ce->name, ce->name_length, 1);
ZVAL_STRINGL(propname, name_str, name_len, 1);
}
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &propname, sizeof(zval *), NULL);
reference = (property_reference*) emalloc(sizeof(property_reference));

View File

@ -50,14 +50,14 @@ var_dump($r->bar);
===DONE===
--EXPECTF--
ReflectionMethodEx::__construct
string(18) "ReflectionMethodEx"
string(7) "getName"
string(3) "xyz"
%unicode|string%(26) "ReflectionFunctionAbstract"
%unicode|string%(7) "getName"
%unicode|string%(3) "xyz"
NULL
Cannot set read-only property ReflectionMethodEx::$class
Cannot set read-only property ReflectionMethodEx::$name
string(18) "ReflectionMethodEx"
string(7) "getName"
string(3) "bar"
string(3) "baz"
%unicode|string%(26) "ReflectionFunctionAbstract"
%unicode|string%(7) "getName"
%unicode|string%(3) "bar"
%unicode|string%(3) "baz"
===DONE===

View File

@ -48,121 +48,121 @@ foreach($classes as $class) {
--EXPECTF--
Reflecting on class pubf:
--> Check for f(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for s(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for F(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for doesntExist(): Method doesntExist does not exist
Reflecting on class subpubf:
--> Check for f(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for s(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for F(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for doesntExist(): Method doesntExist does not exist
Reflecting on class protf:
--> Check for f(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for s(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for F(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for doesntExist(): Method doesntExist does not exist
Reflecting on class subprotf:
--> Check for f(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for s(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for F(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for doesntExist(): Method doesntExist does not exist
Reflecting on class privf:
--> Check for f(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for s(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for F(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for doesntExist(): Method doesntExist does not exist
Reflecting on class subprivf:
--> Check for f(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(8) "subprivf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for s(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(8) "subprivf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for F(): object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(8) "subprivf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for doesntExist(): Method doesntExist does not exist
--> Check for doesntExist(): Method doesntExist does not exist

View File

@ -40,101 +40,101 @@ Reflecting on class pubf:
array(2) {
[0]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
[1]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
}
Reflecting on class subpubf:
array(2) {
[0]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
[1]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
}
Reflecting on class protf:
array(2) {
[0]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
[1]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
}
Reflecting on class subprotf:
array(2) {
[0]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
[1]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
}
Reflecting on class privf:
array(2) {
[0]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
[1]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
}
Reflecting on class subprivf:
array(2) {
[0]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "f"
["class"]=>
string(8) "subprivf"
[%u|b%"name"]=>
%unicode|string%(1) "f"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
[1]=>
&object(ReflectionMethod)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(8) "subprivf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
}
}

View File

@ -40,87 +40,87 @@ Reflecting on class pubf:
array(2) {
[0]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
[1]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
}
Reflecting on class subpubf:
array(2) {
[0]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
[1]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
}
Reflecting on class protf:
array(2) {
[0]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
[1]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
}
Reflecting on class subprotf:
array(2) {
[0]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
[1]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
}
Reflecting on class privf:
array(2) {
[0]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
[1]=>
&object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
}
Reflecting on class subprivf:
array(0) {
}
}

View File

@ -61,86 +61,86 @@ foreach($classes as $class) {
--EXPECTF--
Reflecting on class pubf:
--> Check for s: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for a: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(4) "pubf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for A: Property A does not exist
--> Check for doesntExist: Property doesntExist does not exist
Reflecting on class subpubf:
--> Check for s: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for a: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(7) "subpubf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(4) "pubf"
}
--> Check for A: Property A does not exist
--> Check for doesntExist: Property doesntExist does not exist
Reflecting on class protf:
--> Check for s: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for a: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(5) "protf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for A: Property A does not exist
--> Check for doesntExist: Property doesntExist does not exist
Reflecting on class subprotf:
--> Check for s: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for a: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(8) "subprotf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(5) "protf"
}
--> Check for A: Property A does not exist
--> Check for doesntExist: Property doesntExist does not exist
Reflecting on class privf:
--> Check for s: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for a: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "a"
["class"]=>
string(5) "privf"
[%u|b%"name"]=>
%unicode|string%(1) "a"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for A: Property A does not exist
--> Check for doesntExist: Property doesntExist does not exist
Reflecting on class subprivf:
--> Check for s: object(ReflectionProperty)#%d (2) {
["name"]=>
string(1) "s"
["class"]=>
string(8) "subprivf"
[%u|b%"name"]=>
%unicode|string%(1) "s"
[%u|b%"class"]=>
%unicode|string%(5) "privf"
}
--> Check for a: Property a does not exist
--> Check for A: Property A does not exist
--> Check for doesntExist: Property doesntExist does not exist
--> Check for doesntExist: Property doesntExist does not exist

View File

@ -97,146 +97,146 @@ showInfo("doesntexist::doesntExist");
--EXPECTF--
--- (Reflecting on pubA) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubA"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubA"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
string(9) "pubA in A"
%unicode|string%(9) "pubA in A"
--- (Reflecting on protA) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protA"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protA"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
Cannot access non-public member C::protA
--- (Reflecting on privA) ---
Property privA does not exist
--- (Reflecting on pubB) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubB"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubB"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
string(9) "pubB in B"
%unicode|string%(9) "pubB in B"
--- (Reflecting on protB) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protB"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protB"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
Cannot access non-public member C::protB
--- (Reflecting on privB) ---
Property privB does not exist
--- (Reflecting on pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::protC
--- (Reflecting on privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::privC
--- (Reflecting on doesntExist) ---
Property doesntExist does not exist
--- (Reflecting on A::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "A"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
string(9) "pubC in A"
%unicode|string%(9) "pubC in A"
--- (Reflecting on A::protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "A"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
Cannot access non-public member A::protC
--- (Reflecting on A::privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "A"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
Cannot access non-public member A::privC
--- (Reflecting on B::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "B"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
string(9) "pubC in B"
%unicode|string%(9) "pubC in B"
--- (Reflecting on B::protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "B"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
Cannot access non-public member B::protC
--- (Reflecting on B::privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "B"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
Cannot access non-public member B::privC
--- (Reflecting on c::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on c::PUBC) ---
Property PUBC does not exist
--- (Reflecting on C::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on C::protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::protC
--- (Reflecting on C::privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::privC
--- (Reflecting on X::pubC) ---
@ -248,4 +248,4 @@ Fully qualified property name X::privC does not specify a base class of C
--- (Reflecting on X::doesntExist) ---
Fully qualified property name X::doesntExist does not specify a base class of C
--- (Reflecting on doesntexist::doesntExist) ---
Class doesntexist does not exist
Class doesntexist does not exist

View File

@ -97,146 +97,146 @@ showInfo("doesntexist::doesntExist");
--EXPECTF--
--- (Reflecting on pubA) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubA"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubA"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
string(9) "pubA in A"
%unicode|string%(9) "pubA in A"
--- (Reflecting on protA) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protA"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protA"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
Cannot access non-public member C::protA
--- (Reflecting on privA) ---
Property privA does not exist
--- (Reflecting on pubB) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubB"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubB"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
string(9) "pubB in B"
%unicode|string%(9) "pubB in B"
--- (Reflecting on protB) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protB"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protB"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
Cannot access non-public member C::protB
--- (Reflecting on privB) ---
Property privB does not exist
--- (Reflecting on pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::protC
--- (Reflecting on privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::privC
--- (Reflecting on doesntExist) ---
Property doesntExist does not exist
--- (Reflecting on A::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "A"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on A::protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "A"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
Cannot access non-public member A::protC
--- (Reflecting on A::privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "A"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
Cannot access non-public member A::privC
--- (Reflecting on B::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "B"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on B::protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "B"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
Cannot access non-public member B::protC
--- (Reflecting on B::privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "B"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
Cannot access non-public member B::privC
--- (Reflecting on c::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on c::PUBC) ---
Property PUBC does not exist
--- (Reflecting on C::pubC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(4) "pubC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
string(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on C::protC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "protC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "protC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::protC
--- (Reflecting on C::privC) ---
object(ReflectionProperty)#%d (2) {
["name"]=>
string(5) "privC"
["class"]=>
string(1) "C"
[%u|b%"name"]=>
%unicode|string%(5) "privC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
Cannot access non-public member C::privC
--- (Reflecting on X::pubC) ---
@ -248,4 +248,4 @@ Fully qualified property name X::privC does not specify a base class of C
--- (Reflecting on X::doesntExist) ---
Fully qualified property name X::doesntExist does not specify a base class of C
--- (Reflecting on doesntexist::doesntExist) ---
Class doesntexist does not exist
Class doesntexist does not exist

View File

@ -154,71 +154,71 @@ Modifiers for method TestClass::__autoload():
int(65792)
Modifiers for method DerivedClass::foo():
Modifiers for method TestClass::foo():
int(65792)
Modifiers for method DerivedClass::stat():
Modifiers for method TestClass::stat():
int(257)
Modifiers for method DerivedClass::priv():
Modifiers for method TestClass::priv():
int(66560)
Modifiers for method DerivedClass::prot():
Modifiers for method TestClass::prot():
int(66048)
Modifiers for method DerivedClass::fin():
Modifiers for method TestClass::fin():
int(65796)
Modifiers for method DerivedClass::__destruct():
Modifiers for method TestClass::__destruct():
int(16640)
Modifiers for method DerivedClass::__call():
Modifiers for method TestClass::__call():
int(256)
Modifiers for method DerivedClass::__clone():
Modifiers for method TestClass::__clone():
int(33024)
Modifiers for method DerivedClass::__get():
Modifiers for method TestClass::__get():
int(256)
Modifiers for method DerivedClass::__set():
Modifiers for method TestClass::__set():
int(256)
Modifiers for method DerivedClass::__unset():
Modifiers for method TestClass::__unset():
int(256)
Modifiers for method DerivedClass::__isset():
Modifiers for method TestClass::__isset():
int(256)
Modifiers for method DerivedClass::__tostring():
Modifiers for method TestClass::__tostring():
int(256)
Modifiers for method DerivedClass::__sleep():
Modifiers for method TestClass::__sleep():
int(65792)
Modifiers for method DerivedClass::__wakeup():
Modifiers for method TestClass::__wakeup():
int(65792)
Modifiers for method DerivedClass::__set_state():
Modifiers for method TestClass::__set_state():
int(65792)
Modifiers for method DerivedClass::__autoload():
Modifiers for method TestClass::__autoload():
int(65792)