clone_004.phpt 939 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. --TEST--
  2. ZE2 object cloning, 4
  3. --FILE--
  4. <?php
  5. abstract class base {
  6. public $a = 'base';
  7. // disallow cloning
  8. private function __clone() {}
  9. }
  10. class test extends base {
  11. public $b = 'test';
  12. // re-enable cloning
  13. public function __clone() {}
  14. public function show() {
  15. var_dump($this);
  16. }
  17. }
  18. echo "Original\n";
  19. $o1 = new test;
  20. $o1->a = array(1,2);
  21. $o1->b = array(3,4);
  22. $o1->show();
  23. echo "Clone\n";
  24. $o2 = clone $o1;
  25. $o2->show();
  26. echo "Modify\n";
  27. $o2->a = 5;
  28. $o2->b = 6;
  29. $o2->show();
  30. echo "Done\n";
  31. ?>
  32. --EXPECT--
  33. Original
  34. object(test)#1 (2) {
  35. ["a"]=>
  36. array(2) {
  37. [0]=>
  38. int(1)
  39. [1]=>
  40. int(2)
  41. }
  42. ["b"]=>
  43. array(2) {
  44. [0]=>
  45. int(3)
  46. [1]=>
  47. int(4)
  48. }
  49. }
  50. Clone
  51. object(test)#2 (2) {
  52. ["a"]=>
  53. array(2) {
  54. [0]=>
  55. int(1)
  56. [1]=>
  57. int(2)
  58. }
  59. ["b"]=>
  60. array(2) {
  61. [0]=>
  62. int(3)
  63. [1]=>
  64. int(4)
  65. }
  66. }
  67. Modify
  68. object(test)#2 (2) {
  69. ["a"]=>
  70. int(5)
  71. ["b"]=>
  72. int(6)
  73. }
  74. Done