File:
[ELWIX - Embedded LightWeight unIX -] /
embedaddon /
php /
tests /
classes /
ctor_dtor_inheritance.phpt
Revision
1.1.1.1 (vendor branch):
download - view:
text,
annotated -
select for diffs -
revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 6 months ago) by
misho
Branches:
php,
MAIN
CVS tags:
v5_4_3elwix,
v5_4_29p0,
v5_4_29,
v5_4_20p0,
v5_4_20,
v5_4_17p0,
v5_4_17,
v5_3_10,
HEAD
php
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>