Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_objects_005.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Check behaviour of incomplete class
! 3: --FILE--
! 4: <?php
! 5: /* Prototype : proto string serialize(mixed variable)
! 6: * Description: Returns a string representation of variable (which can later be unserialized)
! 7: * Source code: ext/standard/var.c
! 8: * Alias to functions:
! 9: */
! 10: /* Prototype : proto mixed unserialize(string variable_representation)
! 11: * Description: Takes a string representation of variable and recreates it
! 12: * Source code: ext/standard/var.c
! 13: * Alias to functions:
! 14: */
! 15:
! 16: $serialized = 'O:1:"C":1:{s:1:"p";i:1;}';
! 17:
! 18: $incomplete = unserialize($serialized);
! 19: eval('Class C {}');
! 20: $complete = unserialize($serialized);
! 21:
! 22:
! 23: echo "\n\n---> Various types of access on complete class:\n" ;
! 24: var_dump($complete);
! 25: var_dump(is_object($complete));
! 26: var_dump($complete->p);
! 27:
! 28: $ref1 = "ref1.original";
! 29: $complete->p = &$ref1;
! 30: var_dump($complete->p);
! 31: $ref1 = "ref1.changed";
! 32: var_dump($complete->p);
! 33: $complete->p = "p.changed";
! 34: var_dump($ref1);
! 35:
! 36: var_dump(isset($complete->x));
! 37: $complete->x = "x.new";
! 38: var_dump(isset($complete->x));
! 39: unset($complete->x);
! 40: var_dump($complete->x);
! 41:
! 42:
! 43: echo "\n\n---> Same types of access on incomplete class:\n" ;
! 44: var_dump($incomplete);
! 45: var_dump(is_object($incomplete));
! 46: var_dump($incomplete->p);
! 47:
! 48: $ref2 = "ref1.original";
! 49: $incomplete->p = &$ref2;
! 50: var_dump($incomplete->p);
! 51: $ref2 = "ref1.changed";
! 52: var_dump($incomplete->p);
! 53: $incomplete->p = "p.changed";
! 54: var_dump($ref1);
! 55:
! 56: var_dump(isset($incomplete->x));
! 57: $incomplete->x = "x.new";
! 58: var_dump(isset($incomplete->x));
! 59: unset($incomplete->x);
! 60: var_dump($incomplete->x);
! 61:
! 62: $incomplete->f();
! 63:
! 64: echo "Done";
! 65: ?>
! 66: --EXPECTF--
! 67: ---> Various types of access on complete class:
! 68: object(C)#%d (1) {
! 69: ["p"]=>
! 70: int(1)
! 71: }
! 72: bool(true)
! 73: int(1)
! 74: string(13) "ref1.original"
! 75: string(12) "ref1.changed"
! 76: string(9) "p.changed"
! 77: bool(false)
! 78: bool(true)
! 79:
! 80: Notice: Undefined property: C::$x in %s on line 37
! 81: NULL
! 82:
! 83:
! 84: ---> Same types of access on incomplete class:
! 85: object(__PHP_Incomplete_Class)#%d (2) {
! 86: ["__PHP_Incomplete_Class_Name"]=>
! 87: string(1) "C"
! 88: ["p"]=>
! 89: int(1)
! 90: }
! 91: bool(false)
! 92:
! 93: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 43
! 94: NULL
! 95:
! 96: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 46
! 97:
! 98: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 47
! 99: NULL
! 100:
! 101: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 49
! 102: NULL
! 103:
! 104: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 50
! 105: string(9) "p.changed"
! 106:
! 107: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 53
! 108: bool(false)
! 109:
! 110: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 54
! 111:
! 112: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 55
! 113: bool(false)
! 114:
! 115: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 56
! 116:
! 117: Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 57
! 118: NULL
! 119:
! 120: Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "C" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line 59
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>