diff options
author | Marcus Boerger <helly@php.net> | 2003-03-03 11:18:59 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2003-03-03 11:18:59 +0000 |
commit | cc52373c1002b9e99d590c7bba89ceadb15cc32c (patch) | |
tree | e0a37ac5aebe0660185b95c3917adbc0dbcbd3e9 | |
parent | 447da280ddd0c3a9d342bdee07afacb61ae94fd6 (diff) | |
download | php-git-cc52373c1002b9e99d590c7bba89ceadb15cc32c.tar.gz |
Adding tests for ctor/dtor handling
-rw-r--r-- | tests/classes/ctor_dtor.phpt | 48 | ||||
-rw-r--r-- | tests/classes/ctor_dtor_inheritance.phpt | 99 |
2 files changed, 147 insertions, 0 deletions
diff --git a/tests/classes/ctor_dtor.phpt b/tests/classes/ctor_dtor.phpt new file mode 100644 index 0000000000..e265b0fcba --- /dev/null +++ b/tests/classes/ctor_dtor.phpt @@ -0,0 +1,48 @@ +--TEST-- +The new constructor/destructor is called +--SKIPIF-- +<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> +--FILE-- +<?php + +class early { + function early() { + echo __CLASS__ . "::" . __FUNCTION__ . "\n"; + } + function __construct() { + echo __CLASS__ . "::" . __FUNCTION__ . "\n"; + } + function __destruct() { + echo __CLASS__ . "::" . __FUNCTION__ . "\n"; + } +} + +class late { + function __construct() { + echo __CLASS__ . "::" . __FUNCTION__ . "\n"; + } + function late() { + echo __CLASS__ . "::" . __FUNCTION__ . "\n"; + } + function __destruct() { + echo __CLASS__ . "::" . __FUNCTION__ . "\n"; + } +} + +$t = new early(); +$t->early(); +unset($t); +$t = new late(); +$t->late(); +//unset($t); delay to end of script + +echo "Done\n"; +?> +--EXPECTF-- +early::__construct +early::early +early::__destruct +late::__construct +late::late +Done +late::__destruct diff --git a/tests/classes/ctor_dtor_inheritance.phpt b/tests/classes/ctor_dtor_inheritance.phpt new file mode 100644 index 0000000000..1937b85164 --- /dev/null +++ b/tests/classes/ctor_dtor_inheritance.phpt @@ -0,0 +1,99 @@ +--TEST-- +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 |