File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / Zend / tests / bug33512.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:47:52 2012 UTC (13 years, 1 month 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: Bug #33512 (unset() overloaded properties doesn't work)
    3: --FILE--
    4: <?php
    5: class TheObj {
    6: 		public $RealVar1, $RealVar2, $RealVar3, $RealVar4;
    7: 		public $Var = array();
    8: 
    9: 		function __set($var, $val) {
   10: 			$this->Var[$var] = $val;
   11: 		}
   12: 		function __get($var) {
   13: 			if(isset($this->Var[$var])) return $this->Var[$var];
   14: 			else return -1;
   15: 		}
   16: 		function __unset($var) {
   17: 			unset($this->Var[$var]);
   18: 		}
   19: 	}
   20: 
   21: 	$SomeObj = new TheObj;
   22: 
   23: 	// this will fine
   24: 	$SomeObj->RealVar1 = 'somevalue';
   25: 	$SomeObj->{'RealVar2'} = 'othervalue';
   26: 	$SomeObj->{'RealVar'.(3)} = 'othervaluetoo';
   27: 	$SomeObj->{'RealVar'.'4'} = 'anothervalue';
   28: 
   29: 	// this will fine too
   30: 	$SomeObj->Virtual1 = 'somevalue';
   31: 	$SomeObj->{'Virtual2'} = 'othervalue';
   32: 
   33: 	// it's can't be used since this will encounter error
   34: 	$SomeObj->{'Virtual'.(3)} = 'othervaluetoo';
   35: 	$SomeObj->{'Virtual'.'4'} = 'anothervalue';
   36: 
   37: 	// but this will fine, ofcourse
   38: 	$SomeObj->Var['Virtual'.(3)] = 'othervaluetoo';
   39: 	$SomeObj->Var['Virtual'.'4'] = 'anothervalue';
   40: 
   41: 
   42: 	var_dump($SomeObj->RealVar1);
   43: 	print $SomeObj->{'RealVar'.(3)}."\n";
   44: 	
   45: 	unset($SomeObj->RealVar1);
   46: 	unset($SomeObj->{'RealVar'.(3)});
   47: 
   48: 	//the lines below will catch by '__get' magic method since these variables are unavailable anymore
   49: 	var_dump($SomeObj->RealVar1);
   50: 	print $SomeObj->{'RealVar'.(3)}."\n";
   51: 
   52: 	// now we will try to unset these variables
   53: 	unset($SomeObj->Virtual1);
   54: 	unset($SomeObj->{'Virtual'.(3)});
   55: 
   56: 	//but, these variables are still available??? eventhough they're "unset"-ed
   57: 	print $SomeObj->Virtual1."\n";
   58: 	print $SomeObj->{'Virtual'.(3)}."\n";
   59: ?>
   60: --EXPECT--
   61: string(9) "somevalue"
   62: othervaluetoo
   63: int(-1)
   64: -1
   65: -1
   66: -1

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>