Browse Source

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

experimental/first_unicode_implementation
Felipe Pena 17 years ago
parent
commit
cab1fb7ce1
  1. 29
      ext/reflection/php_reflection.c
  2. 14
      ext/reflection/tests/002.phpt
  3. 6
      ext/reflection/tests/008.phpt
  4. 146
      ext/reflection/tests/ReflectionClass_getMethod_001.phpt
  5. 98
      ext/reflection/tests/ReflectionClass_getMethods_001.phpt
  6. 82
      ext/reflection/tests/ReflectionClass_getProperties_001.phpt
  7. 90
      ext/reflection/tests/ReflectionClass_getProperty_001.phpt
  8. 152
      ext/reflection/tests/ReflectionClass_getProperty_003.phpt
  9. 152
      ext/reflection/tests/ReflectionClass_getProperty_004.phpt
  10. 34
      ext/reflection/tests/ReflectionMethod_getModifiers_basic.phpt

29
ext/reflection/php_reflection.c

@ -1239,7 +1239,8 @@ static void reflection_method_factory(zend_class_entry *ce, zend_function *metho
MAKE_STD_ZVAL(name);
MAKE_STD_ZVAL(classname);
ZVAL_TEXT(name, method->common.function_name, 1);
ZVAL_TEXTL(classname, ce->name, ce->name_length, 1);
ZVAL_UNICODEL(classname, method->common.scope->name.u, 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;
@ -1283,7 +1284,7 @@ static void reflection_property_factory(zend_class_entry *ce, zend_property_info
MAKE_STD_ZVAL(name);
MAKE_STD_ZVAL(classname);
ZVAL_TEXT(name, prop_name, 1);
ZVAL_TEXTL(classname, ce->name, ce->name_length, 1);
ZVAL_UNICODEL(classname, prop->ce->name.u, prop->ce->name_length, 1);
reflection_instantiate(reflection_property_ptr, object TSRMLS_CC);
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
@ -2542,11 +2543,6 @@ ZEND_METHOD(reflection_method, __construct)
zval_dtor(&ztmp);
}
MAKE_STD_ZVAL(classname);
ZVAL_TEXTL(classname, ce->name, ce->name_length, 1);
zend_ascii_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
lcname = zend_u_str_case_fold(type, name_str, name_len, 1, &lcname_len);
if (ce == zend_ce_closure && orig_obj && (lcname_len == sizeof(ZEND_INVOKE_FUNC_NAME)-1)
@ -2589,18 +2585,25 @@ ZEND_METHOD(reflection_method, __construct)
return;
}
}
MAKE_STD_ZVAL(classname);
MAKE_STD_ZVAL(name);
if (intern->obj) {
ZVAL_ZSTRL(name, type, name_str, name_len, 1);
ZVAL_UNICODEL(classname, ce->name.u, ce->name_length, 1);
ZVAL_ZSTRL(name, type, name_str, name_len, 1);
} else {
ZVAL_UNICODEL(classname, mptr->common.scope->name.u, mptr->common.scope->name_length, 1);
ZVAL_TEXT(name, mptr->common.function_name, 1);
}
efree(lcname.v);
if (free_name_str) {
efree(name_str.v);
}
zend_ascii_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
zend_ascii_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
intern->ptr = mptr;
intern->ref_type = REF_TYPE_FUNCTION;
intern->ce = ce;
@ -4525,17 +4528,17 @@ ZEND_METHOD(reflection_property, __construct)
}
MAKE_STD_ZVAL(classname);
ZVAL_TEXTL(classname, ce->name, ce->name_length, 1);
zend_ascii_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
MAKE_STD_ZVAL(propname);
if (dynam_prop == 0) {
zend_u_unmangle_property_name(IS_UNICODE, property_info->name, property_info->name_length, &class_name, &prop_name);
ZVAL_UNICODEL(classname, property_info->ce->name.u, property_info->ce->name_length, 1);
ZVAL_TEXT(propname, prop_name, 1);
} else {
ZVAL_UNICODEL(classname, ce->name.u, ce->name_length, 1);
ZVAL_TEXTL(propname, name_str, name_len, 1);
}
zend_ascii_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
zend_ascii_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &propname, sizeof(zval *), NULL);
reference = (property_reference*) emalloc(sizeof(property_reference));

14
ext/reflection/tests/002.phpt

@ -50,14 +50,14 @@ var_dump($r->bar);
===DONE===
--EXPECTF--
ReflectionMethodEx::__construct
unicode(18) "ReflectionMethodEx"
unicode(7) "getName"
unicode(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
unicode(18) "ReflectionMethodEx"
unicode(7) "getName"
unicode(3) "bar"
unicode(3) "baz"
%unicode|string%(26) "ReflectionFunctionAbstract"
%unicode|string%(7) "getName"
%unicode|string%(3) "bar"
%unicode|string%(3) "baz"
===DONE===

6
ext/reflection/tests/008.phpt

@ -65,7 +65,7 @@ derived::dPro = dPro
derived::xPro = nPub
derived::dPri = dPri
derived::xPri = nPri
derived::rPub = rPub
derived::rPro = rPro
derived::stat = rStat
root::rPub = rPub
root::rPro = rPro
root::stat = rStat
===DONE===

146
ext/reflection/tests/ReflectionClass_getMethod_001.phpt

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

98
ext/reflection/tests/ReflectionClass_getMethods_001.phpt

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

82
ext/reflection/tests/ReflectionClass_getProperties_001.phpt

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

90
ext/reflection/tests/ReflectionClass_getProperty_001.phpt

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

152
ext/reflection/tests/ReflectionClass_getProperty_003.phpt

@ -97,146 +97,146 @@ showInfo("doesntexist::doesntExist");
--EXPECTF--
--- (Reflecting on pubA) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(4) "pubA"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubA"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
unicode(9) "pubA in A"
%unicode|string%(9) "pubA in A"
--- (Reflecting on protA) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protA"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubB"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubB"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
unicode(9) "pubB in B"
%unicode|string%(9) "pubB in B"
--- (Reflecting on protB) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protB"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
unicode(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "A"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
unicode(9) "pubC in A"
%unicode|string%(9) "pubC in A"
--- (Reflecting on A::protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "B"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
unicode(9) "pubC in B"
%unicode|string%(9) "pubC in B"
--- (Reflecting on B::protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
unicode(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on C::protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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

152
ext/reflection/tests/ReflectionClass_getProperty_004.phpt

@ -97,146 +97,146 @@ showInfo("doesntexist::doesntExist");
--EXPECTF--
--- (Reflecting on pubA) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(4) "pubA"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubA"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
unicode(9) "pubA in A"
%unicode|string%(9) "pubA in A"
--- (Reflecting on protA) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protA"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubB"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubB"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
unicode(9) "pubB in B"
%unicode|string%(9) "pubB in B"
--- (Reflecting on protB) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protB"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
unicode(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "A"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "A"
}
unicode(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on A::protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "B"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "B"
}
unicode(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on B::protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
unicode(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) {
[u"name"]=>
unicode(4) "pubC"
[u"class"]=>
unicode(1) "C"
[%u|b%"name"]=>
%unicode|string%(4) "pubC"
[%u|b%"class"]=>
%unicode|string%(1) "C"
}
unicode(9) "pubC in C"
%unicode|string%(9) "pubC in C"
--- (Reflecting on C::protC) ---
object(ReflectionProperty)#%d (2) {
[u"name"]=>
unicode(5) "protC"
[u"class"]=>
unicode(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) {
[u"name"]=>
unicode(5) "privC"
[u"class"]=>
unicode(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

34
ext/reflection/tests/ReflectionMethod_getModifiers_basic.phpt

@ -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)

Loading…
Cancel
Save