mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Change the order of properties used for var_dump(), serialize(), comparison, etc.
Now properties are ordered according to their layout in zend_object structure.
This commit is contained in:
parent
b86dfb0e74
commit
72c3ededed
35 changed files with 305 additions and 317 deletions
|
@ -57,12 +57,12 @@ array(3) {
|
||||||
}
|
}
|
||||||
Child::__construct
|
Child::__construct
|
||||||
array(3) {
|
array(3) {
|
||||||
["Baz"]=>
|
|
||||||
int(4)
|
|
||||||
["Foo"]=>
|
["Foo"]=>
|
||||||
int(1)
|
int(1)
|
||||||
["Bar"]=>
|
["Bar"]=>
|
||||||
int(2)
|
int(2)
|
||||||
|
["Baz"]=>
|
||||||
|
int(4)
|
||||||
}
|
}
|
||||||
array(1) {
|
array(1) {
|
||||||
["Foo"]=>
|
["Foo"]=>
|
||||||
|
|
|
@ -32,14 +32,14 @@ var_dump($b);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
object(SubclassA)#%d (2) {
|
object(SubclassA)#%d (2) {
|
||||||
["hello":"SubclassA":private]=>
|
|
||||||
int(0)
|
|
||||||
["hello":"BaseWithPropA":private]=>
|
["hello":"BaseWithPropA":private]=>
|
||||||
int(0)
|
int(0)
|
||||||
|
["hello":"SubclassA":private]=>
|
||||||
|
int(0)
|
||||||
}
|
}
|
||||||
object(SubclassB)#%d (2) {
|
object(SubclassB)#%d (2) {
|
||||||
["hello":"SubclassB":private]=>
|
|
||||||
int(0)
|
|
||||||
["hello":"BaseWithTPropB":private]=>
|
["hello":"BaseWithTPropB":private]=>
|
||||||
int(0)
|
int(0)
|
||||||
|
["hello":"SubclassB":private]=>
|
||||||
|
int(0)
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,14 +45,14 @@ NULL
|
||||||
NULL
|
NULL
|
||||||
NULL
|
NULL
|
||||||
object(c)#1 (6) {
|
object(c)#1 (6) {
|
||||||
["prop1"]=>
|
|
||||||
int(1)
|
|
||||||
["prop2":protected]=>
|
|
||||||
int(2)
|
|
||||||
["prop3":"a":private]=>
|
["prop3":"a":private]=>
|
||||||
int(3)
|
int(3)
|
||||||
["prop4":"a":private]=>
|
["prop4":"a":private]=>
|
||||||
int(4)
|
int(4)
|
||||||
|
["prop1"]=>
|
||||||
|
int(1)
|
||||||
|
["prop2":protected]=>
|
||||||
|
int(2)
|
||||||
["prop5"]=>
|
["prop5"]=>
|
||||||
int(5)
|
int(5)
|
||||||
["prop6"]=>
|
["prop6"]=>
|
||||||
|
|
|
@ -33,10 +33,10 @@ echo "\n";
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
array (
|
array (
|
||||||
'' . "\0" . 'B' . "\0" . 'priv' => 4,
|
|
||||||
'pub' => 1,
|
'pub' => 1,
|
||||||
'' . "\0" . '*' . "\0" . 'prot' => 2,
|
'' . "\0" . '*' . "\0" . 'prot' => 2,
|
||||||
'' . "\0" . 'A' . "\0" . 'priv' => 3,
|
'' . "\0" . 'A' . "\0" . 'priv' => 3,
|
||||||
|
'' . "\0" . 'B' . "\0" . 'priv' => 4,
|
||||||
'dyn' => 5,
|
'dyn' => 5,
|
||||||
6 => 6,
|
6 => 6,
|
||||||
)
|
)
|
||||||
|
|
|
@ -24,5 +24,5 @@ print_r($a, true);
|
||||||
var_dump($a < $b);
|
var_dump($a < $b);
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
bool(false)
|
bool(true)
|
||||||
bool(false)
|
bool(true)
|
||||||
|
|
|
@ -42,20 +42,20 @@ var_dump($b);
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
object(SubclassClassicInheritance)#1 (2) {
|
object(SubclassClassicInheritance)#1 (2) {
|
||||||
["hello":"SubclassClassicInheritance":private]=>
|
|
||||||
int(0)
|
|
||||||
["hello":"BaseWithPropA":private]=>
|
["hello":"BaseWithPropA":private]=>
|
||||||
int(0)
|
int(0)
|
||||||
|
["hello":"SubclassClassicInheritance":private]=>
|
||||||
|
int(0)
|
||||||
}
|
}
|
||||||
object(SubclassA)#2 (2) {
|
object(SubclassA)#2 (2) {
|
||||||
["hello":"SubclassA":private]=>
|
|
||||||
int(0)
|
|
||||||
["hello":"BaseWithPropA":private]=>
|
["hello":"BaseWithPropA":private]=>
|
||||||
int(0)
|
int(0)
|
||||||
|
["hello":"SubclassA":private]=>
|
||||||
|
int(0)
|
||||||
}
|
}
|
||||||
object(SubclassB)#3 (2) {
|
object(SubclassB)#3 (2) {
|
||||||
["hello":"SubclassB":private]=>
|
|
||||||
int(0)
|
|
||||||
["hello":"BaseWithTPropB":private]=>
|
["hello":"BaseWithTPropB":private]=>
|
||||||
int(0)
|
int(0)
|
||||||
|
["hello":"SubclassB":private]=>
|
||||||
|
int(0)
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,41 +63,24 @@ ZEND_API void rebuild_object_properties(zend_object *zobj) /* {{{ */
|
||||||
if (!zobj->properties) {
|
if (!zobj->properties) {
|
||||||
zend_property_info *prop_info;
|
zend_property_info *prop_info;
|
||||||
zend_class_entry *ce = zobj->ce;
|
zend_class_entry *ce = zobj->ce;
|
||||||
uint32_t flags = 0;
|
int i;
|
||||||
|
|
||||||
zobj->properties = zend_new_array(ce->default_properties_count);
|
zobj->properties = zend_new_array(ce->default_properties_count);
|
||||||
if (ce->default_properties_count) {
|
if (ce->default_properties_count) {
|
||||||
zend_hash_real_init_mixed(zobj->properties);
|
zend_hash_real_init_mixed(zobj->properties);
|
||||||
ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop_info) {
|
for (i = 0; i < ce->default_properties_count; i++) {
|
||||||
if (!(prop_info->flags & ZEND_ACC_STATIC)) {
|
prop_info = ce->properties_info_table[i];
|
||||||
flags |= prop_info->flags;
|
|
||||||
|
|
||||||
if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) {
|
if (!prop_info) {
|
||||||
HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
_zend_hash_append_ind(zobj->properties, prop_info->name,
|
|
||||||
OBJ_PROP(zobj, prop_info->offset));
|
|
||||||
}
|
}
|
||||||
} ZEND_HASH_FOREACH_END();
|
|
||||||
if (flags & ZEND_ACC_CHANGED) {
|
|
||||||
while (ce->parent && ce->parent->default_properties_count) {
|
|
||||||
ce = ce->parent;
|
|
||||||
ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop_info) {
|
|
||||||
if (prop_info->ce == ce &&
|
|
||||||
!(prop_info->flags & ZEND_ACC_STATIC) &&
|
|
||||||
(prop_info->flags & ZEND_ACC_PRIVATE)) {
|
|
||||||
zval zv;
|
|
||||||
|
|
||||||
if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) {
|
if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) {
|
||||||
HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
|
HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
|
||||||
}
|
|
||||||
|
|
||||||
ZVAL_INDIRECT(&zv, OBJ_PROP(zobj, prop_info->offset));
|
|
||||||
zend_hash_add(zobj->properties, prop_info->name, &zv);
|
|
||||||
}
|
|
||||||
} ZEND_HASH_FOREACH_END();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_zend_hash_append_ind(zobj->properties, prop_info->name,
|
||||||
|
OBJ_PROP(zobj, prop_info->offset));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1555,6 +1538,7 @@ ZEND_API int zend_std_compare_objects(zval *o1, zval *o2) /* {{{ */
|
||||||
}
|
}
|
||||||
if (!zobj1->properties && !zobj2->properties) {
|
if (!zobj1->properties && !zobj2->properties) {
|
||||||
zend_property_info *info;
|
zend_property_info *info;
|
||||||
|
int i;
|
||||||
|
|
||||||
if (!zobj1->ce->default_properties_count) {
|
if (!zobj1->ce->default_properties_count) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1570,14 +1554,18 @@ ZEND_API int zend_std_compare_objects(zval *o1, zval *o2) /* {{{ */
|
||||||
}
|
}
|
||||||
Z_PROTECT_RECURSION_P(o1);
|
Z_PROTECT_RECURSION_P(o1);
|
||||||
|
|
||||||
ZEND_HASH_FOREACH_PTR(&zobj1->ce->properties_info, info) {
|
for (i = 0; i < zobj1->ce->default_properties_count; i++) {
|
||||||
zval *p1 = OBJ_PROP(zobj1, info->offset);
|
zval *p1, *p2;
|
||||||
zval *p2 = OBJ_PROP(zobj2, info->offset);
|
|
||||||
|
|
||||||
if (info->flags & ZEND_ACC_STATIC) {
|
info = zobj1->ce->properties_info_table[i];
|
||||||
|
|
||||||
|
if (!info) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p1 = OBJ_PROP(zobj1, info->offset);
|
||||||
|
p2 = OBJ_PROP(zobj2, info->offset);
|
||||||
|
|
||||||
if (Z_TYPE_P(p1) != IS_UNDEF) {
|
if (Z_TYPE_P(p1) != IS_UNDEF) {
|
||||||
if (Z_TYPE_P(p2) != IS_UNDEF) {
|
if (Z_TYPE_P(p2) != IS_UNDEF) {
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -1597,7 +1585,7 @@ ZEND_API int zend_std_compare_objects(zval *o1, zval *o2) /* {{{ */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ZEND_HASH_FOREACH_END();
|
}
|
||||||
|
|
||||||
Z_UNPROTECT_RECURSION_P(o1);
|
Z_UNPROTECT_RECURSION_P(o1);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -51,28 +51,28 @@ object(DateTimeZoneExt1)#%d (4) {
|
||||||
string(13) "Europe/London"
|
string(13) "Europe/London"
|
||||||
}
|
}
|
||||||
object(DateTimeZoneExt2)#%d (6) {
|
object(DateTimeZoneExt2)#%d (6) {
|
||||||
["property3"]=>
|
|
||||||
bool(true)
|
|
||||||
["property4"]=>
|
|
||||||
float(10.5)
|
|
||||||
["property1"]=>
|
["property1"]=>
|
||||||
int(99)
|
int(99)
|
||||||
["property2"]=>
|
["property2"]=>
|
||||||
string(5) "Hello"
|
string(5) "Hello"
|
||||||
|
["property3"]=>
|
||||||
|
bool(true)
|
||||||
|
["property4"]=>
|
||||||
|
float(10.5)
|
||||||
["timezone_type"]=>
|
["timezone_type"]=>
|
||||||
int(3)
|
int(3)
|
||||||
["timezone"]=>
|
["timezone"]=>
|
||||||
string(13) "Europe/London"
|
string(13) "Europe/London"
|
||||||
}
|
}
|
||||||
object(DateTimeZoneExt2)#%d (6) {
|
object(DateTimeZoneExt2)#%d (6) {
|
||||||
["property3"]=>
|
|
||||||
bool(true)
|
|
||||||
["property4"]=>
|
|
||||||
float(10.5)
|
|
||||||
["property1"]=>
|
["property1"]=>
|
||||||
int(99)
|
int(99)
|
||||||
["property2"]=>
|
["property2"]=>
|
||||||
string(5) "Hello"
|
string(5) "Hello"
|
||||||
|
["property3"]=>
|
||||||
|
bool(true)
|
||||||
|
["property4"]=>
|
||||||
|
float(10.5)
|
||||||
["timezone_type"]=>
|
["timezone_type"]=>
|
||||||
int(3)
|
int(3)
|
||||||
["timezone"]=>
|
["timezone"]=>
|
||||||
|
|
|
@ -55,14 +55,14 @@ object(DateTimeExt1)#%d (5) {
|
||||||
string(3) "GMT"
|
string(3) "GMT"
|
||||||
}
|
}
|
||||||
object(DateTimeExt2)#%d (7) {
|
object(DateTimeExt2)#%d (7) {
|
||||||
["property3"]=>
|
|
||||||
bool(true)
|
|
||||||
["property4"]=>
|
|
||||||
float(10.5)
|
|
||||||
["property1"]=>
|
["property1"]=>
|
||||||
int(99)
|
int(99)
|
||||||
["property2"]=>
|
["property2"]=>
|
||||||
string(5) "Hello"
|
string(5) "Hello"
|
||||||
|
["property3"]=>
|
||||||
|
bool(true)
|
||||||
|
["property4"]=>
|
||||||
|
float(10.5)
|
||||||
["date"]=>
|
["date"]=>
|
||||||
string(26) "2009-02-03 12:34:41.000000"
|
string(26) "2009-02-03 12:34:41.000000"
|
||||||
["timezone_type"]=>
|
["timezone_type"]=>
|
||||||
|
@ -71,14 +71,14 @@ object(DateTimeExt2)#%d (7) {
|
||||||
string(3) "GMT"
|
string(3) "GMT"
|
||||||
}
|
}
|
||||||
object(DateTimeExt2)#%d (7) {
|
object(DateTimeExt2)#%d (7) {
|
||||||
["property3"]=>
|
|
||||||
bool(true)
|
|
||||||
["property4"]=>
|
|
||||||
float(10.5)
|
|
||||||
["property1"]=>
|
["property1"]=>
|
||||||
int(99)
|
int(99)
|
||||||
["property2"]=>
|
["property2"]=>
|
||||||
string(5) "Hello"
|
string(5) "Hello"
|
||||||
|
["property3"]=>
|
||||||
|
bool(true)
|
||||||
|
["property4"]=>
|
||||||
|
float(10.5)
|
||||||
["date"]=>
|
["date"]=>
|
||||||
string(26) "2009-02-03 12:34:41.000000"
|
string(26) "2009-02-03 12:34:41.000000"
|
||||||
["timezone_type"]=>
|
["timezone_type"]=>
|
||||||
|
|
|
@ -30,6 +30,8 @@ object(DOMException)#%d (%d) {
|
||||||
string(23) "Hierarchy Request Error"
|
string(23) "Hierarchy Request Error"
|
||||||
["string":"Exception":private]=>
|
["string":"Exception":private]=>
|
||||||
string(0) ""
|
string(0) ""
|
||||||
|
["code"]=>
|
||||||
|
int(3)
|
||||||
["file":protected]=>
|
["file":protected]=>
|
||||||
string(%d) "%sdom003.php"
|
string(%d) "%sdom003.php"
|
||||||
["line":protected]=>
|
["line":protected]=>
|
||||||
|
@ -57,8 +59,6 @@ object(DOMException)#%d (%d) {
|
||||||
}
|
}
|
||||||
["previous":"Exception":private]=>
|
["previous":"Exception":private]=>
|
||||||
NULL
|
NULL
|
||||||
["code"]=>
|
|
||||||
int(3)
|
|
||||||
}
|
}
|
||||||
--- Don't catch exception with try/catch
|
--- Don't catch exception with try/catch
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,8 @@ object(DOMException)#%d (7) {
|
||||||
string(20) "Wrong Document Error"
|
string(20) "Wrong Document Error"
|
||||||
["string":"Exception":private]=>
|
["string":"Exception":private]=>
|
||||||
string(0) ""
|
string(0) ""
|
||||||
|
["code"]=>
|
||||||
|
int(4)
|
||||||
["file":protected]=>
|
["file":protected]=>
|
||||||
string(%d) "%sdom_set_attr_node.php"
|
string(%d) "%sdom_set_attr_node.php"
|
||||||
["line":protected]=>
|
["line":protected]=>
|
||||||
|
@ -67,6 +69,4 @@ object(DOMException)#%d (7) {
|
||||||
}
|
}
|
||||||
["previous":"Exception":private]=>
|
["previous":"Exception":private]=>
|
||||||
NULL
|
NULL
|
||||||
["code"]=>
|
|
||||||
int(4)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,23 +291,23 @@ string(1) "a"
|
||||||
reference, object, forward declaration...
|
reference, object, forward declaration...
|
||||||
int(1)
|
int(1)
|
||||||
object(bar)#%d (2) {
|
object(bar)#%d (2) {
|
||||||
["bar"]=>
|
|
||||||
&string(1) "a"
|
|
||||||
["foo"]=>
|
["foo"]=>
|
||||||
&string(1) "a"
|
&string(1) "a"
|
||||||
|
["bar"]=>
|
||||||
|
&string(1) "a"
|
||||||
}
|
}
|
||||||
string(1) "a"
|
string(1) "a"
|
||||||
references, object, private...
|
references, object, private...
|
||||||
int(1)
|
int(1)
|
||||||
string(1) "a"
|
string(1) "a"
|
||||||
object(mega_bar)#5 (4) {
|
object(mega_bar)#5 (4) {
|
||||||
|
["foo"]=>
|
||||||
|
&string(1) "a"
|
||||||
|
["bar"]=>
|
||||||
|
&string(1) "a"
|
||||||
[%s]=>
|
[%s]=>
|
||||||
&int(1)
|
&int(1)
|
||||||
["id_ref"]=>
|
["id_ref"]=>
|
||||||
&int(1)
|
&int(1)
|
||||||
["bar"]=>
|
|
||||||
&string(1) "a"
|
|
||||||
["foo"]=>
|
|
||||||
&string(1) "a"
|
|
||||||
}
|
}
|
||||||
done!
|
done!
|
||||||
|
|
|
@ -114,40 +114,40 @@ TestDerived::__construct(2,3)
|
||||||
array(3) {
|
array(3) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(TestDerived)#%d (5) {
|
object(TestDerived)#%d (5) {
|
||||||
["row":protected]=>
|
|
||||||
int(0)
|
|
||||||
["id"]=>
|
["id"]=>
|
||||||
string(1) "1"
|
string(1) "1"
|
||||||
["val":protected]=>
|
["val":protected]=>
|
||||||
string(1) "A"
|
string(1) "A"
|
||||||
["val2":"TestBase":private]=>
|
["val2":"TestBase":private]=>
|
||||||
NULL
|
NULL
|
||||||
|
["row":protected]=>
|
||||||
|
int(0)
|
||||||
["val2"]=>
|
["val2"]=>
|
||||||
string(2) "AA"
|
string(2) "AA"
|
||||||
}
|
}
|
||||||
[1]=>
|
[1]=>
|
||||||
object(TestDerived)#%d (5) {
|
object(TestDerived)#%d (5) {
|
||||||
["row":protected]=>
|
|
||||||
int(1)
|
|
||||||
["id"]=>
|
["id"]=>
|
||||||
string(1) "2"
|
string(1) "2"
|
||||||
["val":protected]=>
|
["val":protected]=>
|
||||||
string(1) "B"
|
string(1) "B"
|
||||||
["val2":"TestBase":private]=>
|
["val2":"TestBase":private]=>
|
||||||
NULL
|
NULL
|
||||||
|
["row":protected]=>
|
||||||
|
int(1)
|
||||||
["val2"]=>
|
["val2"]=>
|
||||||
string(2) "BB"
|
string(2) "BB"
|
||||||
}
|
}
|
||||||
[2]=>
|
[2]=>
|
||||||
object(TestDerived)#%d (5) {
|
object(TestDerived)#%d (5) {
|
||||||
["row":protected]=>
|
|
||||||
int(2)
|
|
||||||
["id"]=>
|
["id"]=>
|
||||||
string(1) "3"
|
string(1) "3"
|
||||||
["val":protected]=>
|
["val":protected]=>
|
||||||
string(1) "C"
|
string(1) "C"
|
||||||
["val2":"TestBase":private]=>
|
["val2":"TestBase":private]=>
|
||||||
NULL
|
NULL
|
||||||
|
["row":protected]=>
|
||||||
|
int(2)
|
||||||
["val2"]=>
|
["val2"]=>
|
||||||
string(2) "CC"
|
string(2) "CC"
|
||||||
}
|
}
|
||||||
|
|
|
@ -206,9 +206,9 @@ array(4) {
|
||||||
===INSERT===
|
===INSERT===
|
||||||
TestBase::serialize() = 'a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}'
|
TestBase::serialize() = 'a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}'
|
||||||
TestDerived::serialize()
|
TestDerived::serialize()
|
||||||
TestBase::serialize() = 'a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}'
|
TestBase::serialize() = 'a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}'
|
||||||
TestDerived::serialize()
|
TestDerived::serialize()
|
||||||
TestBase::serialize() = 'a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}'
|
TestBase::serialize() = 'a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}'
|
||||||
===DATA===
|
===DATA===
|
||||||
array(4) {
|
array(4) {
|
||||||
[0]=>
|
[0]=>
|
||||||
|
@ -216,9 +216,9 @@ array(4) {
|
||||||
[1]=>
|
[1]=>
|
||||||
string(91) "a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
|
string(91) "a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
|
||||||
[2]=>
|
[2]=>
|
||||||
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
|
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
|
||||||
[3]=>
|
[3]=>
|
||||||
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
|
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
|
||||||
}
|
}
|
||||||
===FAILURE===
|
===FAILURE===
|
||||||
Exception:SQLSTATE[HY000]: General error: cannot unserialize class
|
Exception:SQLSTATE[HY000]: General error: cannot unserialize class
|
||||||
|
@ -238,22 +238,22 @@ array(3) {
|
||||||
["name"]=>
|
["name"]=>
|
||||||
string(11) "TestDerived"
|
string(11) "TestDerived"
|
||||||
["val"]=>
|
["val"]=>
|
||||||
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
|
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
|
||||||
}
|
}
|
||||||
[2]=>
|
[2]=>
|
||||||
array(2) {
|
array(2) {
|
||||||
["name"]=>
|
["name"]=>
|
||||||
NULL
|
NULL
|
||||||
["val"]=>
|
["val"]=>
|
||||||
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
|
string(172) "a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
===FETCHCLASS===
|
===FETCHCLASS===
|
||||||
TestBase::unserialize(a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";})
|
TestBase::unserialize(a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";})
|
||||||
TestDerived::unserialize()
|
TestDerived::unserialize()
|
||||||
TestBase::unserialize(a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";})
|
TestBase::unserialize(a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";})
|
||||||
TestDerived::unserialize()
|
TestDerived::unserialize()
|
||||||
TestBase::unserialize(a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";})
|
TestBase::unserialize(a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:7:"BasePri";s:7:"Private";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";})
|
||||||
array(3) {
|
array(3) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(TestBase)#%d (3) {
|
object(TestBase)#%d (3) {
|
||||||
|
@ -270,14 +270,14 @@ array(3) {
|
||||||
string(14) "#DerivedPublic"
|
string(14) "#DerivedPublic"
|
||||||
["BasePro":protected]=>
|
["BasePro":protected]=>
|
||||||
string(17) "#DerivdeProtected"
|
string(17) "#DerivdeProtected"
|
||||||
|
["BasePri":"TestBase":private]=>
|
||||||
|
string(8) "#Private"
|
||||||
["DerivedPub"]=>
|
["DerivedPub"]=>
|
||||||
string(7) "#Public"
|
string(7) "#Public"
|
||||||
["DerivedPro":protected]=>
|
["DerivedPro":protected]=>
|
||||||
string(10) "#Protected"
|
string(10) "#Protected"
|
||||||
["DerivedPri":"TestDerived":private]=>
|
["DerivedPri":"TestDerived":private]=>
|
||||||
string(7) "Private"
|
string(7) "Private"
|
||||||
["BasePri":"TestBase":private]=>
|
|
||||||
string(8) "#Private"
|
|
||||||
}
|
}
|
||||||
[2]=>
|
[2]=>
|
||||||
object(TestLeaf)#%d (6) {
|
object(TestLeaf)#%d (6) {
|
||||||
|
@ -285,13 +285,13 @@ array(3) {
|
||||||
string(14) "#DerivedPublic"
|
string(14) "#DerivedPublic"
|
||||||
["BasePro":protected]=>
|
["BasePro":protected]=>
|
||||||
string(17) "#DerivdeProtected"
|
string(17) "#DerivdeProtected"
|
||||||
|
["BasePri":"TestBase":private]=>
|
||||||
|
string(8) "#Private"
|
||||||
["DerivedPub"]=>
|
["DerivedPub"]=>
|
||||||
string(7) "#Public"
|
string(7) "#Public"
|
||||||
["DerivedPro":protected]=>
|
["DerivedPro":protected]=>
|
||||||
string(10) "#Protected"
|
string(10) "#Protected"
|
||||||
["DerivedPri":"TestDerived":private]=>
|
["DerivedPri":"TestDerived":private]=>
|
||||||
string(7) "Private"
|
string(7) "Private"
|
||||||
["BasePri":"TestBase":private]=>
|
|
||||||
string(8) "#Private"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,10 +95,10 @@ PDOStatementX::__destruct()
|
||||||
PDODatabaseX::query()
|
PDODatabaseX::query()
|
||||||
PDOStatementX::__construct()
|
PDOStatementX::__construct()
|
||||||
object(PDOStatementX)#%d (3) {
|
object(PDOStatementX)#%d (3) {
|
||||||
["test1"]=>
|
|
||||||
int(1)
|
|
||||||
["queryString"]=>
|
["queryString"]=>
|
||||||
string(24) "SELECT val, id FROM test"
|
string(24) "SELECT val, id FROM test"
|
||||||
|
["test1"]=>
|
||||||
|
int(1)
|
||||||
["test2"]=>
|
["test2"]=>
|
||||||
int(22)
|
int(22)
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,6 @@ print_r($client->f());
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
B Object
|
B Object
|
||||||
(
|
(
|
||||||
[y] => 6
|
|
||||||
[x] => 5
|
[x] => 5
|
||||||
|
[y] => 6
|
||||||
)
|
)
|
||||||
|
|
|
@ -235,25 +235,25 @@ array(2) {
|
||||||
array(2) {
|
array(2) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(Child_test1)#%d (4) {
|
object(Child_test1)#%d (4) {
|
||||||
["member2"]=>
|
|
||||||
int(102)
|
|
||||||
["member1"]=>
|
["member1"]=>
|
||||||
int(100)
|
int(100)
|
||||||
["var1"]=>
|
["var1"]=>
|
||||||
int(30)
|
int(30)
|
||||||
["var2"]=>
|
["var2"]=>
|
||||||
int(101)
|
int(101)
|
||||||
|
["member2"]=>
|
||||||
|
int(102)
|
||||||
}
|
}
|
||||||
[1]=>
|
[1]=>
|
||||||
object(Child_test1)#%d (4) {
|
object(Child_test1)#%d (4) {
|
||||||
["member2"]=>
|
|
||||||
int(102)
|
|
||||||
["member1"]=>
|
["member1"]=>
|
||||||
int(100)
|
int(100)
|
||||||
["var1"]=>
|
["var1"]=>
|
||||||
int(30)
|
int(30)
|
||||||
["var2"]=>
|
["var2"]=>
|
||||||
int(101)
|
int(101)
|
||||||
|
["member2"]=>
|
||||||
|
int(102)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-- Iteration 4 --
|
-- Iteration 4 --
|
||||||
|
@ -281,25 +281,25 @@ array(2) {
|
||||||
array(2) {
|
array(2) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(Child_test2)#%d (4) {
|
object(Child_test2)#%d (4) {
|
||||||
["member1":"Child_test2":private]=>
|
["member1":"Test2":private]=>
|
||||||
int(102)
|
int(100)
|
||||||
["var1"]=>
|
["var1"]=>
|
||||||
int(30)
|
int(30)
|
||||||
["var2"]=>
|
["var2"]=>
|
||||||
int(101)
|
int(101)
|
||||||
["member1":"Test2":private]=>
|
["member1":"Child_test2":private]=>
|
||||||
int(100)
|
int(102)
|
||||||
}
|
}
|
||||||
[1]=>
|
[1]=>
|
||||||
object(Child_test2)#%d (4) {
|
object(Child_test2)#%d (4) {
|
||||||
["member1":"Child_test2":private]=>
|
["member1":"Test2":private]=>
|
||||||
int(102)
|
int(100)
|
||||||
["var1"]=>
|
["var1"]=>
|
||||||
int(30)
|
int(30)
|
||||||
["var2"]=>
|
["var2"]=>
|
||||||
int(101)
|
int(101)
|
||||||
["member1":"Test2":private]=>
|
["member1":"Child_test2":private]=>
|
||||||
int(100)
|
int(102)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-- Iteration 6 --
|
-- Iteration 6 --
|
||||||
|
@ -369,25 +369,25 @@ array(2) {
|
||||||
array(2) {
|
array(2) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(Child_test4)#%d (4) {
|
object(Child_test4)#%d (4) {
|
||||||
["var1"]=>
|
|
||||||
int(103)
|
|
||||||
["member1"]=>
|
["member1"]=>
|
||||||
int(100)
|
int(100)
|
||||||
["member2":"Test4":private]=>
|
["member2":"Test4":private]=>
|
||||||
int(101)
|
int(101)
|
||||||
["member3":protected]=>
|
["member3":protected]=>
|
||||||
int(102)
|
int(102)
|
||||||
|
["var1"]=>
|
||||||
|
int(103)
|
||||||
}
|
}
|
||||||
[1]=>
|
[1]=>
|
||||||
object(Child_test4)#%d (4) {
|
object(Child_test4)#%d (4) {
|
||||||
["var1"]=>
|
|
||||||
int(103)
|
|
||||||
["member1"]=>
|
["member1"]=>
|
||||||
int(100)
|
int(100)
|
||||||
["member2":"Test4":private]=>
|
["member2":"Test4":private]=>
|
||||||
int(101)
|
int(101)
|
||||||
["member3":protected]=>
|
["member3":protected]=>
|
||||||
int(102)
|
int(102)
|
||||||
|
["var1"]=>
|
||||||
|
int(103)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-- Iteration 10 --
|
-- Iteration 10 --
|
||||||
|
|
|
@ -105,10 +105,10 @@ array(5) {
|
||||||
}
|
}
|
||||||
[2]=>
|
[2]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["var3":"ChildClass":private]=>
|
|
||||||
NULL
|
|
||||||
["var2":protected]=>
|
["var2":protected]=>
|
||||||
int(5)
|
int(5)
|
||||||
|
["var3":"ChildClass":private]=>
|
||||||
|
NULL
|
||||||
}
|
}
|
||||||
[3]=>
|
[3]=>
|
||||||
object(FinalClass)#%d (1) {
|
object(FinalClass)#%d (1) {
|
||||||
|
@ -130,10 +130,10 @@ array(5) {
|
||||||
}
|
}
|
||||||
[2]=>
|
[2]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["var3":"ChildClass":private]=>
|
|
||||||
NULL
|
|
||||||
["var2":protected]=>
|
["var2":protected]=>
|
||||||
int(5)
|
int(5)
|
||||||
|
["var3":"ChildClass":private]=>
|
||||||
|
NULL
|
||||||
}
|
}
|
||||||
[3]=>
|
[3]=>
|
||||||
object(FinalClass)#%d (1) {
|
object(FinalClass)#%d (1) {
|
||||||
|
|
|
@ -173,10 +173,10 @@ int(5)
|
||||||
array(5) {
|
array(5) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["var3":"ChildClass":private]=>
|
|
||||||
NULL
|
|
||||||
["var2":protected]=>
|
["var2":protected]=>
|
||||||
int(5)
|
int(5)
|
||||||
|
["var3":"ChildClass":private]=>
|
||||||
|
NULL
|
||||||
}
|
}
|
||||||
["f"]=>
|
["f"]=>
|
||||||
string(5) "first"
|
string(5) "first"
|
||||||
|
@ -191,10 +191,10 @@ int(7)
|
||||||
array(7) {
|
array(7) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["var3":"ChildClass":private]=>
|
|
||||||
NULL
|
|
||||||
["var2":protected]=>
|
["var2":protected]=>
|
||||||
int(5)
|
int(5)
|
||||||
|
["var3":"ChildClass":private]=>
|
||||||
|
NULL
|
||||||
}
|
}
|
||||||
[1]=>
|
[1]=>
|
||||||
string(5) "hello"
|
string(5) "hello"
|
||||||
|
|
|
@ -146,31 +146,31 @@ bool(true)
|
||||||
array(4) {
|
array(4) {
|
||||||
[2]=>
|
[2]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(15)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(15)
|
||||||
}
|
}
|
||||||
[0]=>
|
[0]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(20)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(20)
|
||||||
}
|
}
|
||||||
[1]=>
|
[1]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(500)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(500)
|
||||||
}
|
}
|
||||||
[3]=>
|
[3]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(700)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(700)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Done
|
Done
|
||||||
|
|
|
@ -129,30 +129,30 @@ bool(true)
|
||||||
array(4) {
|
array(4) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(15)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(15)
|
||||||
}
|
}
|
||||||
[1]=>
|
[1]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(20)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(20)
|
||||||
}
|
}
|
||||||
[2]=>
|
[2]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(500)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(500)
|
||||||
}
|
}
|
||||||
[3]=>
|
[3]=>
|
||||||
object(ChildClass)#%d (2) {
|
object(ChildClass)#%d (2) {
|
||||||
["child_value"]=>
|
|
||||||
int(700)
|
|
||||||
["pub_value"]=>
|
["pub_value"]=>
|
||||||
NULL
|
NULL
|
||||||
|
["child_value"]=>
|
||||||
|
int(700)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,12 +84,12 @@ array(2) {
|
||||||
---( Superclass: )---
|
---( Superclass: )---
|
||||||
A::test
|
A::test
|
||||||
array(3) {
|
array(3) {
|
||||||
|
["hiddenPriv"]=>
|
||||||
|
string(13) "A::hiddenPriv"
|
||||||
["prot"]=>
|
["prot"]=>
|
||||||
string(7) "B::prot"
|
string(7) "B::prot"
|
||||||
["pub"]=>
|
["pub"]=>
|
||||||
string(6) "B::pub"
|
string(6) "B::pub"
|
||||||
["hiddenPriv"]=>
|
|
||||||
string(13) "A::hiddenPriv"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
---( Unrelated class: )---
|
---( Unrelated class: )---
|
||||||
|
|
|
@ -48,10 +48,10 @@ array(4) {
|
||||||
---( Superclass: )---
|
---( Superclass: )---
|
||||||
A::testA
|
A::testA
|
||||||
array(3) {
|
array(3) {
|
||||||
|
["hiddenPriv"]=>
|
||||||
|
string(13) "A::hiddenPriv"
|
||||||
["prot"]=>
|
["prot"]=>
|
||||||
string(7) "B::prot"
|
string(7) "B::prot"
|
||||||
["pub"]=>
|
["pub"]=>
|
||||||
string(6) "B::pub"
|
string(6) "B::pub"
|
||||||
["hiddenPriv"]=>
|
|
||||||
string(13) "A::hiddenPriv"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,16 +41,16 @@ var_dump(unserialize($s));
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
string(63) "O:1:"B":2:{i:0;a:1:{i:0;O:8:"stdClass":0:{}}i:1;a:1:{i:0;r:3;}}"
|
string(63) "O:1:"B":2:{i:0;a:1:{i:0;O:8:"stdClass":0:{}}i:1;a:1:{i:0;r:3;}}"
|
||||||
object(B)#3 (2) {
|
object(B)#3 (2) {
|
||||||
["data2":"B":private]=>
|
|
||||||
array(1) {
|
|
||||||
[0]=>
|
|
||||||
object(stdClass)#4 (0) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
["data":"A":private]=>
|
["data":"A":private]=>
|
||||||
array(1) {
|
array(1) {
|
||||||
[0]=>
|
[0]=>
|
||||||
object(stdClass)#4 (0) {
|
object(stdClass)#4 (0) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
["data2":"B":private]=>
|
||||||
|
array(1) {
|
||||||
|
[0]=>
|
||||||
|
object(stdClass)#4 (0) {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,6 @@ print_r($u);
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
Derived Object
|
Derived Object
|
||||||
(
|
(
|
||||||
[id:protected] => 44
|
|
||||||
[id:Base:private] => 64
|
[id:Base:private] => 64
|
||||||
|
[id:protected] => 44
|
||||||
)
|
)
|
||||||
|
|
|
@ -97,35 +97,35 @@ Sanity check: bool(true)
|
||||||
|
|
||||||
Before serialization:
|
Before serialization:
|
||||||
object(B)#%d (6) {
|
object(B)#%d (6) {
|
||||||
["BPriv":"B":private]=>
|
|
||||||
string(7) "B.BPriv"
|
|
||||||
["BProt":protected]=>
|
|
||||||
string(7) "B.BProt"
|
|
||||||
["BPub"]=>
|
|
||||||
string(6) "B.BPub"
|
|
||||||
["APriv":"A":private]=>
|
["APriv":"A":private]=>
|
||||||
string(7) "A.APriv"
|
string(7) "A.APriv"
|
||||||
["AProt":protected]=>
|
["AProt":protected]=>
|
||||||
string(7) "A.AProt"
|
string(7) "A.AProt"
|
||||||
["APub"]=>
|
["APub"]=>
|
||||||
string(6) "A.APub"
|
string(6) "A.APub"
|
||||||
|
["BPriv":"B":private]=>
|
||||||
|
string(7) "B.BPriv"
|
||||||
|
["BProt":protected]=>
|
||||||
|
string(7) "B.BProt"
|
||||||
|
["BPub"]=>
|
||||||
|
string(6) "B.BPub"
|
||||||
}
|
}
|
||||||
Serialized form:
|
Serialized form:
|
||||||
string(184) "O:1:"B":6:{s:8:"\0B\0BPriv";s:7:"B.BPriv";s:8:"\0*\0BProt";s:7:"B.BProt";s:4:"BPub";s:6:"B.BPub";s:8:"\0A\0APriv";s:7:"A.APriv";s:8:"\0*\0AProt";s:7:"A.AProt";s:4:"APub";s:6:"A.APub";}"
|
string(184) "O:1:"B":6:{s:8:"\0A\0APriv";s:7:"A.APriv";s:8:"\0*\0AProt";s:7:"A.AProt";s:4:"APub";s:6:"A.APub";s:8:"\0B\0BPriv";s:7:"B.BPriv";s:8:"\0*\0BProt";s:7:"B.BProt";s:4:"BPub";s:6:"B.BPub";}"
|
||||||
Unserialized:
|
Unserialized:
|
||||||
object(B)#%d (6) {
|
object(B)#%d (6) {
|
||||||
["BPriv":"B":private]=>
|
|
||||||
string(7) "B.BPriv"
|
|
||||||
["BProt":protected]=>
|
|
||||||
string(7) "B.BProt"
|
|
||||||
["BPub"]=>
|
|
||||||
string(6) "B.BPub"
|
|
||||||
["APriv":"A":private]=>
|
["APriv":"A":private]=>
|
||||||
string(7) "A.APriv"
|
string(7) "A.APriv"
|
||||||
["AProt":protected]=>
|
["AProt":protected]=>
|
||||||
string(7) "A.AProt"
|
string(7) "A.AProt"
|
||||||
["APub"]=>
|
["APub"]=>
|
||||||
string(6) "A.APub"
|
string(6) "A.APub"
|
||||||
|
["BPriv":"B":private]=>
|
||||||
|
string(7) "B.BPriv"
|
||||||
|
["BProt":protected]=>
|
||||||
|
string(7) "B.BProt"
|
||||||
|
["BPub"]=>
|
||||||
|
string(6) "B.BPub"
|
||||||
}
|
}
|
||||||
Sanity check: bool(true)
|
Sanity check: bool(true)
|
||||||
|
|
||||||
|
@ -135,51 +135,51 @@ Sanity check: bool(true)
|
||||||
|
|
||||||
Before serialization:
|
Before serialization:
|
||||||
object(C)#%d (10) {
|
object(C)#%d (10) {
|
||||||
["APriv":"C":private]=>
|
["APriv":"A":private]=>
|
||||||
string(7) "C.APriv"
|
string(7) "A.APriv"
|
||||||
["AProt":protected]=>
|
["AProt":protected]=>
|
||||||
string(7) "C.AProt"
|
string(7) "C.AProt"
|
||||||
["APub"]=>
|
["APub"]=>
|
||||||
string(6) "C.APub"
|
string(6) "C.APub"
|
||||||
["CPriv":"C":private]=>
|
|
||||||
string(7) "C.CPriv"
|
|
||||||
["CProt":protected]=>
|
|
||||||
string(7) "C.BProt"
|
|
||||||
["CPub"]=>
|
|
||||||
string(6) "C.CPub"
|
|
||||||
["BPriv":"B":private]=>
|
["BPriv":"B":private]=>
|
||||||
string(7) "B.BPriv"
|
string(7) "B.BPriv"
|
||||||
["BProt":protected]=>
|
["BProt":protected]=>
|
||||||
string(7) "B.BProt"
|
string(7) "B.BProt"
|
||||||
["BPub"]=>
|
["BPub"]=>
|
||||||
string(6) "B.BPub"
|
string(6) "B.BPub"
|
||||||
["APriv":"A":private]=>
|
["APriv":"C":private]=>
|
||||||
string(7) "A.APriv"
|
string(7) "C.APriv"
|
||||||
|
["CPriv":"C":private]=>
|
||||||
|
string(7) "C.CPriv"
|
||||||
|
["CProt":protected]=>
|
||||||
|
string(7) "C.BProt"
|
||||||
|
["CPub"]=>
|
||||||
|
string(6) "C.CPub"
|
||||||
}
|
}
|
||||||
Serialized form:
|
Serialized form:
|
||||||
string(302) "O:1:"C":10:{s:8:"\0C\0APriv";s:7:"C.APriv";s:8:"\0*\0AProt";s:7:"C.AProt";s:4:"APub";s:6:"C.APub";s:8:"\0C\0CPriv";s:7:"C.CPriv";s:8:"\0*\0CProt";s:7:"C.BProt";s:4:"CPub";s:6:"C.CPub";s:8:"\0B\0BPriv";s:7:"B.BPriv";s:8:"\0*\0BProt";s:7:"B.BProt";s:4:"BPub";s:6:"B.BPub";s:8:"\0A\0APriv";s:7:"A.APriv";}"
|
string(302) "O:1:"C":10:{s:8:"\0A\0APriv";s:7:"A.APriv";s:8:"\0*\0AProt";s:7:"C.AProt";s:4:"APub";s:6:"C.APub";s:8:"\0B\0BPriv";s:7:"B.BPriv";s:8:"\0*\0BProt";s:7:"B.BProt";s:4:"BPub";s:6:"B.BPub";s:8:"\0C\0APriv";s:7:"C.APriv";s:8:"\0C\0CPriv";s:7:"C.CPriv";s:8:"\0*\0CProt";s:7:"C.BProt";s:4:"CPub";s:6:"C.CPub";}"
|
||||||
Unserialized:
|
Unserialized:
|
||||||
object(C)#%d (10) {
|
object(C)#%d (10) {
|
||||||
["APriv":"C":private]=>
|
["APriv":"A":private]=>
|
||||||
string(7) "C.APriv"
|
string(7) "A.APriv"
|
||||||
["AProt":protected]=>
|
["AProt":protected]=>
|
||||||
string(7) "C.AProt"
|
string(7) "C.AProt"
|
||||||
["APub"]=>
|
["APub"]=>
|
||||||
string(6) "C.APub"
|
string(6) "C.APub"
|
||||||
["CPriv":"C":private]=>
|
|
||||||
string(7) "C.CPriv"
|
|
||||||
["CProt":protected]=>
|
|
||||||
string(7) "C.BProt"
|
|
||||||
["CPub"]=>
|
|
||||||
string(6) "C.CPub"
|
|
||||||
["BPriv":"B":private]=>
|
["BPriv":"B":private]=>
|
||||||
string(7) "B.BPriv"
|
string(7) "B.BPriv"
|
||||||
["BProt":protected]=>
|
["BProt":protected]=>
|
||||||
string(7) "B.BProt"
|
string(7) "B.BProt"
|
||||||
["BPub"]=>
|
["BPub"]=>
|
||||||
string(6) "B.BPub"
|
string(6) "B.BPub"
|
||||||
["APriv":"A":private]=>
|
["APriv":"C":private]=>
|
||||||
string(7) "A.APriv"
|
string(7) "C.APriv"
|
||||||
|
["CPriv":"C":private]=>
|
||||||
|
string(7) "C.CPriv"
|
||||||
|
["CProt":protected]=>
|
||||||
|
string(7) "C.BProt"
|
||||||
|
["CPub"]=>
|
||||||
|
string(6) "C.CPub"
|
||||||
}
|
}
|
||||||
Sanity check: bool(true)
|
Sanity check: bool(true)
|
||||||
Done
|
Done
|
||||||
|
|
|
@ -28,15 +28,6 @@ array(1) {
|
||||||
int(1)
|
int(1)
|
||||||
}
|
}
|
||||||
object(myZip)#1 (%d) {
|
object(myZip)#1 (%d) {
|
||||||
["test":"myZip":private]=>
|
|
||||||
int(0)
|
|
||||||
["testp"]=>
|
|
||||||
string(6) "foobar"
|
|
||||||
["testarray":"myZip":private]=>
|
|
||||||
array(1) {
|
|
||||||
[0]=>
|
|
||||||
int(1)
|
|
||||||
}
|
|
||||||
["lastId"]=>
|
["lastId"]=>
|
||||||
int(-1)
|
int(-1)
|
||||||
["status"]=>
|
["status"]=>
|
||||||
|
@ -49,4 +40,13 @@ object(myZip)#1 (%d) {
|
||||||
string(0) ""
|
string(0) ""
|
||||||
["comment"]=>
|
["comment"]=>
|
||||||
string(0) ""
|
string(0) ""
|
||||||
|
["test":"myZip":private]=>
|
||||||
|
int(0)
|
||||||
|
["testp"]=>
|
||||||
|
string(6) "foobar"
|
||||||
|
["testarray":"myZip":private]=>
|
||||||
|
array(1) {
|
||||||
|
[0]=>
|
||||||
|
int(1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,6 @@ array(1) {
|
||||||
int(1)
|
int(1)
|
||||||
}
|
}
|
||||||
object(myZip)#1 (%d) {
|
object(myZip)#1 (%d) {
|
||||||
["test":"myZip":private]=>
|
|
||||||
int(0)
|
|
||||||
["testp"]=>
|
|
||||||
string(6) "foobar"
|
|
||||||
["testarray":"myZip":private]=>
|
|
||||||
array(1) {
|
|
||||||
[0]=>
|
|
||||||
int(1)
|
|
||||||
}
|
|
||||||
["lastId"]=>
|
["lastId"]=>
|
||||||
int(-1)
|
int(-1)
|
||||||
["status"]=>
|
["status"]=>
|
||||||
|
@ -35,4 +26,13 @@ object(myZip)#1 (%d) {
|
||||||
string(0) ""
|
string(0) ""
|
||||||
["comment"]=>
|
["comment"]=>
|
||||||
string(0) ""
|
string(0) ""
|
||||||
|
["test":"myZip":private]=>
|
||||||
|
int(0)
|
||||||
|
["testp"]=>
|
||||||
|
string(6) "foobar"
|
||||||
|
["testarray":"myZip":private]=>
|
||||||
|
array(1) {
|
||||||
|
[0]=>
|
||||||
|
int(1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,20 +37,20 @@ Object
|
||||||
test Object
|
test Object
|
||||||
(
|
(
|
||||||
[p1] => test:1
|
[p1] => test:1
|
||||||
|
[p2] => base:2
|
||||||
[p3] => test:3
|
[p3] => test:3
|
||||||
[p4] => A
|
[p4] => A
|
||||||
[p5] => test:5
|
[p5] => test:5
|
||||||
[p2] => base:2
|
|
||||||
[p6:base:private] => base:6
|
[p6:base:private] => base:6
|
||||||
)
|
)
|
||||||
Clown
|
Clown
|
||||||
test Object
|
test Object
|
||||||
(
|
(
|
||||||
[p1] => test:1
|
[p1] => test:1
|
||||||
|
[p2] => base:2
|
||||||
[p3] => test:3
|
[p3] => test:3
|
||||||
[p4] => A
|
[p4] => A
|
||||||
[p5] => clone:5
|
[p5] => clone:5
|
||||||
[p2] => base:2
|
|
||||||
[p6:base:private] => base:6
|
[p6:base:private] => base:6
|
||||||
)
|
)
|
||||||
Done
|
Done
|
||||||
|
|
|
@ -40,13 +40,6 @@ echo "Done\n";
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
Original
|
Original
|
||||||
object(test)#1 (2) {
|
object(test)#1 (2) {
|
||||||
["b"]=>
|
|
||||||
array(2) {
|
|
||||||
[0]=>
|
|
||||||
int(3)
|
|
||||||
[1]=>
|
|
||||||
int(4)
|
|
||||||
}
|
|
||||||
["a"]=>
|
["a"]=>
|
||||||
array(2) {
|
array(2) {
|
||||||
[0]=>
|
[0]=>
|
||||||
|
@ -54,16 +47,16 @@ object(test)#1 (2) {
|
||||||
[1]=>
|
[1]=>
|
||||||
int(2)
|
int(2)
|
||||||
}
|
}
|
||||||
|
["b"]=>
|
||||||
|
array(2) {
|
||||||
|
[0]=>
|
||||||
|
int(3)
|
||||||
|
[1]=>
|
||||||
|
int(4)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Clone
|
Clone
|
||||||
object(test)#2 (2) {
|
object(test)#2 (2) {
|
||||||
["b"]=>
|
|
||||||
array(2) {
|
|
||||||
[0]=>
|
|
||||||
int(3)
|
|
||||||
[1]=>
|
|
||||||
int(4)
|
|
||||||
}
|
|
||||||
["a"]=>
|
["a"]=>
|
||||||
array(2) {
|
array(2) {
|
||||||
[0]=>
|
[0]=>
|
||||||
|
@ -71,12 +64,19 @@ object(test)#2 (2) {
|
||||||
[1]=>
|
[1]=>
|
||||||
int(2)
|
int(2)
|
||||||
}
|
}
|
||||||
|
["b"]=>
|
||||||
|
array(2) {
|
||||||
|
[0]=>
|
||||||
|
int(3)
|
||||||
|
[1]=>
|
||||||
|
int(4)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Modify
|
Modify
|
||||||
object(test)#2 (2) {
|
object(test)#2 (2) {
|
||||||
["b"]=>
|
|
||||||
int(6)
|
|
||||||
["a"]=>
|
["a"]=>
|
||||||
int(5)
|
int(5)
|
||||||
|
["b"]=>
|
||||||
|
int(6)
|
||||||
}
|
}
|
||||||
Done
|
Done
|
||||||
|
|
|
@ -80,6 +80,11 @@ object(B)#%d (1) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object(C)#%d (3) {
|
object(C)#%d (3) {
|
||||||
|
["a_b"]=>
|
||||||
|
array(1) {
|
||||||
|
["key"]=>
|
||||||
|
string(5) "value"
|
||||||
|
}
|
||||||
["a_c_parent"]=>
|
["a_c_parent"]=>
|
||||||
array(1) {
|
array(1) {
|
||||||
["key"]=>
|
["key"]=>
|
||||||
|
@ -90,9 +95,4 @@ object(C)#%d (3) {
|
||||||
["key"]=>
|
["key"]=>
|
||||||
string(5) "value"
|
string(5) "value"
|
||||||
}
|
}
|
||||||
["a_b"]=>
|
|
||||||
array(1) {
|
|
||||||
["key"]=>
|
|
||||||
string(5) "value"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,31 +67,31 @@ base Object
|
||||||
Testing class derived
|
Testing class derived
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[other] => other
|
|
||||||
[name] => init
|
[name] => init
|
||||||
|
[other] => other
|
||||||
)
|
)
|
||||||
base::__construct
|
base::__construct
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[other] => other
|
|
||||||
[name] => base
|
[name] => base
|
||||||
|
[other] => other
|
||||||
)
|
)
|
||||||
derived::__construct
|
derived::__construct
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[other] => other
|
|
||||||
[name] => derived
|
[name] => derived
|
||||||
|
[other] => other
|
||||||
)
|
)
|
||||||
base::__destruct
|
base::__destruct
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[other] => other
|
|
||||||
[name] => derived
|
[name] => derived
|
||||||
|
[other] => other
|
||||||
)
|
)
|
||||||
derived::__destruct
|
derived::__destruct
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[other] => other
|
|
||||||
[name] => derived
|
[name] => derived
|
||||||
|
[other] => other
|
||||||
)
|
)
|
||||||
Done
|
Done
|
||||||
|
|
|
@ -17,8 +17,8 @@ var_dump(new C);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
object(C)#%d (2) {
|
object(C)#%d (2) {
|
||||||
["c":"B":private]=>
|
|
||||||
NULL
|
|
||||||
["c":"A":private]=>
|
["c":"A":private]=>
|
||||||
NULL
|
NULL
|
||||||
|
["c":"B":private]=>
|
||||||
|
NULL
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,45 +57,45 @@ base::__construct(begin)
|
||||||
base::test
|
base::test
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[member] => derived::member (default)
|
|
||||||
[member:base:private] => base::member
|
[member:base:private] => base::member
|
||||||
|
[member] => derived::member (default)
|
||||||
)
|
)
|
||||||
derived::test
|
derived::test
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[member] => derived::member (default)
|
|
||||||
[member:base:private] => base::member
|
[member:base:private] => base::member
|
||||||
|
[member] => derived::member (default)
|
||||||
)
|
)
|
||||||
base::__construct(end)
|
base::__construct(end)
|
||||||
base::test
|
base::test
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[member] => derived::member (default)
|
|
||||||
[member:base:private] => base::member
|
[member:base:private] => base::member
|
||||||
|
[member] => derived::member (default)
|
||||||
)
|
)
|
||||||
base::test
|
base::test
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[member] => derived::member (default)
|
|
||||||
[member:base:private] => base::member
|
[member:base:private] => base::member
|
||||||
|
[member] => derived::member (default)
|
||||||
)
|
)
|
||||||
derived::test
|
derived::test
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[member] => derived::member (default)
|
|
||||||
[member:base:private] => base::member
|
[member:base:private] => base::member
|
||||||
|
[member] => derived::member (default)
|
||||||
)
|
)
|
||||||
derived::__construct(end)
|
derived::__construct(end)
|
||||||
base::test
|
base::test
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[member] => derived::member
|
|
||||||
[member:base:private] => base::member
|
[member:base:private] => base::member
|
||||||
|
[member] => derived::member
|
||||||
)
|
)
|
||||||
derived::test
|
derived::test
|
||||||
derived Object
|
derived Object
|
||||||
(
|
(
|
||||||
[member] => derived::member
|
|
||||||
[member:base:private] => base::member
|
[member:base:private] => base::member
|
||||||
|
[member] => derived::member
|
||||||
)
|
)
|
||||||
Done
|
Done
|
||||||
|
|
|
@ -191,17 +191,13 @@ object(C)#%d (5) {
|
||||||
|
|
||||||
--> Using instance of D:
|
--> Using instance of D:
|
||||||
in D::doForEachOnThis
|
in D::doForEachOnThis
|
||||||
string(10) "Original f"
|
|
||||||
string(10) "Original g"
|
|
||||||
string(10) "Original a"
|
string(10) "Original a"
|
||||||
string(10) "Original b"
|
string(10) "Original b"
|
||||||
string(10) "Original c"
|
string(10) "Original c"
|
||||||
string(10) "Original d"
|
string(10) "Original d"
|
||||||
|
string(10) "Original f"
|
||||||
|
string(10) "Original g"
|
||||||
object(D)#%d (7) {
|
object(D)#%d (7) {
|
||||||
["f":"D":private]=>
|
|
||||||
string(9) "changed.f"
|
|
||||||
["g":protected]=>
|
|
||||||
string(9) "changed.g"
|
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
["b"]=>
|
["b"]=>
|
||||||
|
@ -212,6 +208,10 @@ object(D)#%d (7) {
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"C":private]=>
|
["e":"C":private]=>
|
||||||
string(10) "Original e"
|
string(10) "Original e"
|
||||||
|
["f":"D":private]=>
|
||||||
|
string(9) "changed.f"
|
||||||
|
["g":protected]=>
|
||||||
|
string(9) "changed.g"
|
||||||
}
|
}
|
||||||
|
|
||||||
--> Using instance of E:
|
--> Using instance of E:
|
||||||
|
@ -220,8 +220,8 @@ string(12) "Overridden a"
|
||||||
string(12) "Overridden b"
|
string(12) "Overridden b"
|
||||||
string(12) "Overridden c"
|
string(12) "Overridden c"
|
||||||
string(12) "Overridden d"
|
string(12) "Overridden d"
|
||||||
string(12) "Overridden e"
|
|
||||||
string(10) "Original g"
|
string(10) "Original g"
|
||||||
|
string(12) "Overridden e"
|
||||||
object(E)#%d (8) {
|
object(E)#%d (8) {
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
|
@ -231,14 +231,14 @@ object(E)#%d (8) {
|
||||||
string(9) "changed.c"
|
string(9) "changed.c"
|
||||||
["d":protected]=>
|
["d":protected]=>
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"E":private]=>
|
["e":"C":private]=>
|
||||||
string(9) "changed.e"
|
string(10) "Original e"
|
||||||
["f":"D":private]=>
|
["f":"D":private]=>
|
||||||
string(10) "Original f"
|
string(10) "Original f"
|
||||||
["g":protected]=>
|
["g":protected]=>
|
||||||
string(9) "changed.g"
|
string(9) "changed.g"
|
||||||
["e":"C":private]=>
|
["e":"E":private]=>
|
||||||
string(10) "Original e"
|
string(9) "changed.e"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -266,17 +266,13 @@ object(C)#%d (5) {
|
||||||
|
|
||||||
--> Using instance of D:
|
--> Using instance of D:
|
||||||
in C::doForEachC
|
in C::doForEachC
|
||||||
string(10) "Original g"
|
|
||||||
string(10) "Original a"
|
string(10) "Original a"
|
||||||
string(10) "Original b"
|
string(10) "Original b"
|
||||||
string(10) "Original c"
|
string(10) "Original c"
|
||||||
string(10) "Original d"
|
string(10) "Original d"
|
||||||
string(10) "Original e"
|
string(10) "Original e"
|
||||||
|
string(10) "Original g"
|
||||||
object(D)#%d (7) {
|
object(D)#%d (7) {
|
||||||
["f":"D":private]=>
|
|
||||||
string(10) "Original f"
|
|
||||||
["g":protected]=>
|
|
||||||
string(9) "changed.g"
|
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
["b"]=>
|
["b"]=>
|
||||||
|
@ -287,6 +283,10 @@ object(D)#%d (7) {
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"C":private]=>
|
["e":"C":private]=>
|
||||||
string(9) "changed.e"
|
string(9) "changed.e"
|
||||||
|
["f":"D":private]=>
|
||||||
|
string(10) "Original f"
|
||||||
|
["g":protected]=>
|
||||||
|
string(9) "changed.g"
|
||||||
}
|
}
|
||||||
|
|
||||||
--> Using instance of E:
|
--> Using instance of E:
|
||||||
|
@ -295,8 +295,8 @@ string(12) "Overridden a"
|
||||||
string(12) "Overridden b"
|
string(12) "Overridden b"
|
||||||
string(12) "Overridden c"
|
string(12) "Overridden c"
|
||||||
string(12) "Overridden d"
|
string(12) "Overridden d"
|
||||||
string(10) "Original g"
|
|
||||||
string(10) "Original e"
|
string(10) "Original e"
|
||||||
|
string(10) "Original g"
|
||||||
object(E)#%d (8) {
|
object(E)#%d (8) {
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
|
@ -306,14 +306,14 @@ object(E)#%d (8) {
|
||||||
string(9) "changed.c"
|
string(9) "changed.c"
|
||||||
["d":protected]=>
|
["d":protected]=>
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"E":private]=>
|
["e":"C":private]=>
|
||||||
string(12) "Overridden e"
|
string(9) "changed.e"
|
||||||
["f":"D":private]=>
|
["f":"D":private]=>
|
||||||
string(10) "Original f"
|
string(10) "Original f"
|
||||||
["g":protected]=>
|
["g":protected]=>
|
||||||
string(9) "changed.g"
|
string(9) "changed.g"
|
||||||
["e":"C":private]=>
|
["e":"E":private]=>
|
||||||
string(9) "changed.e"
|
string(12) "Overridden e"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -375,17 +375,13 @@ object(C)#%d (5) {
|
||||||
|
|
||||||
--> Using instance of D:
|
--> Using instance of D:
|
||||||
in C::doForEach
|
in C::doForEach
|
||||||
string(10) "Original g"
|
|
||||||
string(10) "Original a"
|
string(10) "Original a"
|
||||||
string(10) "Original b"
|
string(10) "Original b"
|
||||||
string(10) "Original c"
|
string(10) "Original c"
|
||||||
string(10) "Original d"
|
string(10) "Original d"
|
||||||
string(10) "Original e"
|
string(10) "Original e"
|
||||||
|
string(10) "Original g"
|
||||||
object(D)#%d (7) {
|
object(D)#%d (7) {
|
||||||
["f":"D":private]=>
|
|
||||||
string(10) "Original f"
|
|
||||||
["g":protected]=>
|
|
||||||
string(9) "changed.g"
|
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
["b"]=>
|
["b"]=>
|
||||||
|
@ -396,41 +392,19 @@ object(D)#%d (7) {
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"C":private]=>
|
["e":"C":private]=>
|
||||||
string(9) "changed.e"
|
string(9) "changed.e"
|
||||||
}
|
|
||||||
in D::doForEach
|
|
||||||
string(10) "Original f"
|
|
||||||
string(10) "Original g"
|
|
||||||
string(10) "Original a"
|
|
||||||
string(10) "Original b"
|
|
||||||
string(10) "Original c"
|
|
||||||
string(10) "Original d"
|
|
||||||
object(D)#%d (7) {
|
|
||||||
["f":"D":private]=>
|
|
||||||
string(9) "changed.f"
|
|
||||||
["g":protected]=>
|
|
||||||
string(9) "changed.g"
|
|
||||||
["a"]=>
|
|
||||||
string(9) "changed.a"
|
|
||||||
["b"]=>
|
|
||||||
string(9) "changed.b"
|
|
||||||
["c"]=>
|
|
||||||
string(9) "changed.c"
|
|
||||||
["d":protected]=>
|
|
||||||
string(9) "changed.d"
|
|
||||||
["e":"C":private]=>
|
|
||||||
string(10) "Original e"
|
|
||||||
}
|
|
||||||
in E::doForEach
|
|
||||||
string(10) "Original g"
|
|
||||||
string(10) "Original a"
|
|
||||||
string(10) "Original b"
|
|
||||||
string(10) "Original c"
|
|
||||||
string(10) "Original d"
|
|
||||||
object(D)#%d (7) {
|
|
||||||
["f":"D":private]=>
|
["f":"D":private]=>
|
||||||
string(10) "Original f"
|
string(10) "Original f"
|
||||||
["g":protected]=>
|
["g":protected]=>
|
||||||
string(9) "changed.g"
|
string(9) "changed.g"
|
||||||
|
}
|
||||||
|
in D::doForEach
|
||||||
|
string(10) "Original a"
|
||||||
|
string(10) "Original b"
|
||||||
|
string(10) "Original c"
|
||||||
|
string(10) "Original d"
|
||||||
|
string(10) "Original f"
|
||||||
|
string(10) "Original g"
|
||||||
|
object(D)#%d (7) {
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
["b"]=>
|
["b"]=>
|
||||||
|
@ -441,6 +415,32 @@ object(D)#%d (7) {
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"C":private]=>
|
["e":"C":private]=>
|
||||||
string(10) "Original e"
|
string(10) "Original e"
|
||||||
|
["f":"D":private]=>
|
||||||
|
string(9) "changed.f"
|
||||||
|
["g":protected]=>
|
||||||
|
string(9) "changed.g"
|
||||||
|
}
|
||||||
|
in E::doForEach
|
||||||
|
string(10) "Original a"
|
||||||
|
string(10) "Original b"
|
||||||
|
string(10) "Original c"
|
||||||
|
string(10) "Original d"
|
||||||
|
string(10) "Original g"
|
||||||
|
object(D)#%d (7) {
|
||||||
|
["a"]=>
|
||||||
|
string(9) "changed.a"
|
||||||
|
["b"]=>
|
||||||
|
string(9) "changed.b"
|
||||||
|
["c"]=>
|
||||||
|
string(9) "changed.c"
|
||||||
|
["d":protected]=>
|
||||||
|
string(9) "changed.d"
|
||||||
|
["e":"C":private]=>
|
||||||
|
string(10) "Original e"
|
||||||
|
["f":"D":private]=>
|
||||||
|
string(10) "Original f"
|
||||||
|
["g":protected]=>
|
||||||
|
string(9) "changed.g"
|
||||||
}
|
}
|
||||||
|
|
||||||
--> Using instance of E:
|
--> Using instance of E:
|
||||||
|
@ -449,8 +449,8 @@ string(12) "Overridden a"
|
||||||
string(12) "Overridden b"
|
string(12) "Overridden b"
|
||||||
string(12) "Overridden c"
|
string(12) "Overridden c"
|
||||||
string(12) "Overridden d"
|
string(12) "Overridden d"
|
||||||
string(10) "Original g"
|
|
||||||
string(10) "Original e"
|
string(10) "Original e"
|
||||||
|
string(10) "Original g"
|
||||||
object(E)#%d (8) {
|
object(E)#%d (8) {
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
|
@ -460,14 +460,14 @@ object(E)#%d (8) {
|
||||||
string(9) "changed.c"
|
string(9) "changed.c"
|
||||||
["d":protected]=>
|
["d":protected]=>
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"E":private]=>
|
["e":"C":private]=>
|
||||||
string(12) "Overridden e"
|
string(9) "changed.e"
|
||||||
["f":"D":private]=>
|
["f":"D":private]=>
|
||||||
string(10) "Original f"
|
string(10) "Original f"
|
||||||
["g":protected]=>
|
["g":protected]=>
|
||||||
string(9) "changed.g"
|
string(9) "changed.g"
|
||||||
["e":"C":private]=>
|
["e":"E":private]=>
|
||||||
string(9) "changed.e"
|
string(12) "Overridden e"
|
||||||
}
|
}
|
||||||
in D::doForEach
|
in D::doForEach
|
||||||
string(12) "Overridden a"
|
string(12) "Overridden a"
|
||||||
|
@ -485,22 +485,22 @@ object(E)#%d (8) {
|
||||||
string(9) "changed.c"
|
string(9) "changed.c"
|
||||||
["d":protected]=>
|
["d":protected]=>
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"E":private]=>
|
["e":"C":private]=>
|
||||||
string(12) "Overridden e"
|
string(10) "Original e"
|
||||||
["f":"D":private]=>
|
["f":"D":private]=>
|
||||||
string(9) "changed.f"
|
string(9) "changed.f"
|
||||||
["g":protected]=>
|
["g":protected]=>
|
||||||
string(9) "changed.g"
|
string(9) "changed.g"
|
||||||
["e":"C":private]=>
|
["e":"E":private]=>
|
||||||
string(10) "Original e"
|
string(12) "Overridden e"
|
||||||
}
|
}
|
||||||
in E::doForEach
|
in E::doForEach
|
||||||
string(12) "Overridden a"
|
string(12) "Overridden a"
|
||||||
string(12) "Overridden b"
|
string(12) "Overridden b"
|
||||||
string(12) "Overridden c"
|
string(12) "Overridden c"
|
||||||
string(12) "Overridden d"
|
string(12) "Overridden d"
|
||||||
string(12) "Overridden e"
|
|
||||||
string(10) "Original g"
|
string(10) "Original g"
|
||||||
|
string(12) "Overridden e"
|
||||||
object(E)#%d (8) {
|
object(E)#%d (8) {
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
|
@ -510,14 +510,14 @@ object(E)#%d (8) {
|
||||||
string(9) "changed.c"
|
string(9) "changed.c"
|
||||||
["d":protected]=>
|
["d":protected]=>
|
||||||
string(9) "changed.d"
|
string(9) "changed.d"
|
||||||
["e":"E":private]=>
|
["e":"C":private]=>
|
||||||
string(9) "changed.e"
|
string(10) "Original e"
|
||||||
["f":"D":private]=>
|
["f":"D":private]=>
|
||||||
string(10) "Original f"
|
string(10) "Original f"
|
||||||
["g":protected]=>
|
["g":protected]=>
|
||||||
string(9) "changed.g"
|
string(9) "changed.g"
|
||||||
["e":"C":private]=>
|
["e":"E":private]=>
|
||||||
string(10) "Original e"
|
string(9) "changed.e"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -545,10 +545,6 @@ string(10) "Original a"
|
||||||
string(10) "Original b"
|
string(10) "Original b"
|
||||||
string(10) "Original c"
|
string(10) "Original c"
|
||||||
object(D)#%d (7) {
|
object(D)#%d (7) {
|
||||||
["f":"D":private]=>
|
|
||||||
string(10) "Original f"
|
|
||||||
["g":protected]=>
|
|
||||||
string(10) "Original g"
|
|
||||||
["a"]=>
|
["a"]=>
|
||||||
string(9) "changed.a"
|
string(9) "changed.a"
|
||||||
["b"]=>
|
["b"]=>
|
||||||
|
@ -559,6 +555,10 @@ object(D)#%d (7) {
|
||||||
string(10) "Original d"
|
string(10) "Original d"
|
||||||
["e":"C":private]=>
|
["e":"C":private]=>
|
||||||
string(10) "Original e"
|
string(10) "Original e"
|
||||||
|
["f":"D":private]=>
|
||||||
|
string(10) "Original f"
|
||||||
|
["g":protected]=>
|
||||||
|
string(10) "Original g"
|
||||||
}
|
}
|
||||||
|
|
||||||
--> Using instance of E:
|
--> Using instance of E:
|
||||||
|
@ -574,12 +574,12 @@ object(E)#%d (8) {
|
||||||
&string(9) "changed.c"
|
&string(9) "changed.c"
|
||||||
["d":protected]=>
|
["d":protected]=>
|
||||||
string(12) "Overridden d"
|
string(12) "Overridden d"
|
||||||
["e":"E":private]=>
|
["e":"C":private]=>
|
||||||
string(12) "Overridden e"
|
string(10) "Original e"
|
||||||
["f":"D":private]=>
|
["f":"D":private]=>
|
||||||
string(10) "Original f"
|
string(10) "Original f"
|
||||||
["g":protected]=>
|
["g":protected]=>
|
||||||
string(10) "Original g"
|
string(10) "Original g"
|
||||||
["e":"C":private]=>
|
["e":"E":private]=>
|
||||||
string(10) "Original e"
|
string(12) "Overridden e"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue