~ubuntu-branches/ubuntu/hardy/php5/hardy-updates

« back to all changes in this revision

Viewing changes to tests/classes/ctor_dtor_inheritance.phpt

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-10-09 03:14:32 UTC
  • Revision ID: james.westby@ubuntu.com-20051009031432-kspik3lobxstafv9
Tags: upstream-5.0.5
ImportĀ upstreamĀ versionĀ 5.0.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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