Annotation of embedaddon/php/tests/classes/ctor_dtor_inheritance.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: ZE2 A derived class can use the inherited constructor/destructor
! 3: --SKIPIF--
! 4: <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
! 5: --FILE--
! 6: <?php
! 7:
! 8: // This test checks for:
! 9: // - inherited constructors/destructors are not called automatically
! 10: // - base classes know about derived properties in constructor/destructor
! 11: // - base class constructors/destructors know the instanciated class name
! 12:
! 13: class base {
! 14: public $name;
! 15:
! 16: function __construct() {
! 17: echo __CLASS__ . "::" . __FUNCTION__ . "\n";
! 18: $this->name = 'base';
! 19: print_r($this);
! 20: }
! 21:
! 22: function __destruct() {
! 23: echo __CLASS__ . "::" . __FUNCTION__ . "\n";
! 24: print_r($this);
! 25: }
! 26: }
! 27:
! 28: class derived extends base {
! 29: public $other;
! 30:
! 31: function __construct() {
! 32: $this->name = 'init';
! 33: $this->other = 'other';
! 34: print_r($this);
! 35: parent::__construct();
! 36: echo __CLASS__ . "::" . __FUNCTION__ . "\n";
! 37: $this->name = 'derived';
! 38: print_r($this);
! 39: }
! 40:
! 41: function __destruct() {
! 42: parent::__destruct();
! 43: echo __CLASS__ . "::" . __FUNCTION__ . "\n";
! 44: print_r($this);
! 45: }
! 46: }
! 47:
! 48: echo "Testing class base\n";
! 49: $t = new base();
! 50: unset($t);
! 51: echo "Testing class derived\n";
! 52: $t = new derived();
! 53: unset($t);
! 54:
! 55: echo "Done\n";
! 56: ?>
! 57: --EXPECTF--
! 58: Testing class base
! 59: base::__construct
! 60: base Object
! 61: (
! 62: [name] => base
! 63: )
! 64: base::__destruct
! 65: base Object
! 66: (
! 67: [name] => base
! 68: )
! 69: Testing class derived
! 70: derived Object
! 71: (
! 72: [other] => other
! 73: [name] => init
! 74: )
! 75: base::__construct
! 76: derived Object
! 77: (
! 78: [other] => other
! 79: [name] => base
! 80: )
! 81: derived::__construct
! 82: derived Object
! 83: (
! 84: [other] => other
! 85: [name] => derived
! 86: )
! 87: base::__destruct
! 88: derived Object
! 89: (
! 90: [other] => other
! 91: [name] => derived
! 92: )
! 93: derived::__destruct
! 94: derived Object
! 95: (
! 96: [other] => other
! 97: [name] => derived
! 98: )
! 99: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>