123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- --TEST--
- ZE2 A derived class can use the inherited constructor/destructor
- --SKIPIF--
- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
- --FILE--
- <?php
- // This test checks for:
- // - inherited constructors/destructors are not called automatically
- // - base classes know about derived properties in constructor/destructor
- // - base class constructors/destructors know the instanciated class name
- class base {
- public $name;
- function __construct() {
- echo __CLASS__ . "::" . __FUNCTION__ . "\n";
- $this->name = 'base';
- print_r($this);
- }
-
- function __destruct() {
- echo __CLASS__ . "::" . __FUNCTION__ . "\n";
- print_r($this);
- }
- }
- class derived extends base {
- public $other;
- function __construct() {
- $this->name = 'init';
- $this->other = 'other';
- print_r($this);
- parent::__construct();
- echo __CLASS__ . "::" . __FUNCTION__ . "\n";
- $this->name = 'derived';
- print_r($this);
- }
- function __destruct() {
- parent::__destruct();
- echo __CLASS__ . "::" . __FUNCTION__ . "\n";
- print_r($this);
- }
- }
- echo "Testing class base\n";
- $t = new base();
- unset($t);
- echo "Testing class derived\n";
- $t = new derived();
- unset($t);
- echo "Done\n";
- ?>
- --EXPECTF--
- Testing class base
- base::__construct
- base Object
- (
- [name] => base
- )
- base::__destruct
- base Object
- (
- [name] => base
- )
- Testing class derived
- derived Object
- (
- [other] => other
- [name] => init
- )
- base::__construct
- derived Object
- (
- [other] => other
- [name] => base
- )
- derived::__construct
- derived Object
- (
- [other] => other
- [name] => derived
- )
- base::__destruct
- derived Object
- (
- [other] => other
- [name] => derived
- )
- derived::__destruct
- derived Object
- (
- [other] => other
- [name] => derived
- )
- Done
|