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>