File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / classes / unset_properties.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 01:32:14 2013 UTC (10 years, 11 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17, HEAD
5.4.17

    1: --TEST--
    2: Un-setting instance properties causes magic methods to be called when trying to access them from outside the magic
    3: methods themselves.
    4: --FILE--
    5: <?php
    6: 
    7: class Test
    8: {
    9: 	public    $publicProperty        = 'publicProperty set';
   10: 
   11: 	protected $protectedProperty     = 'protectedProperty set';
   12: 
   13: 	private   $privateProperty       = 'privateProperty set';
   14: 	
   15: 	public function __get($name)
   16: 	{
   17: 		return '__get "' . $name . '"';
   18: 	}
   19: 	
   20: 	public function __set($name, $value)
   21: 	{
   22: 		$this->$name = $value;
   23: 		echo '__set "' . $name . '" to "' . $value . '"';
   24: 	}
   25: 	
   26: 	public function __isset($name)
   27: 	{
   28: 		echo '__isset "' . $name . '"';
   29: 		return isset($this->$name);
   30: 	}
   31: 	
   32: 	public function getPublicProperty()
   33: 	{
   34: 		return $this->publicProperty;
   35: 	}
   36: 	
   37: 	public function setPublicProperty($publicProperty)
   38: 	{
   39: 		$this->publicProperty = $publicProperty;
   40: 	}
   41: 
   42: 	public function unsetProtectedProperty()
   43: 	{
   44: 		unset($this->protectedProperty);
   45: 	}
   46: 
   47: 	public function getProtectedProperty()
   48: 	{
   49: 		return $this->protectedProperty;
   50: 	}
   51: 
   52: 	public function setProtectedProperty($protectedProperty)
   53: 	{
   54: 		$this->protectedProperty = $protectedProperty;
   55: 	}
   56: 
   57: 	public function unsetPrivateProperty()
   58: 	{
   59: 		unset($this->privateProperty);
   60: 	}
   61: 
   62: 	public function getPrivateProperty()
   63: 	{
   64: 		return $this->privateProperty;
   65: 	}
   66: 
   67: 	public function setPrivateProperty($privateProperty)
   68: 	{
   69: 		$this->privateProperty = $privateProperty;
   70: 	}
   71: }
   72: 
   73: // verifying public property
   74: $o = new Test;
   75: echo $o->publicProperty;
   76: echo "\n";
   77: var_export(isset($o->publicProperty));
   78: echo "\n";
   79: unset($o->publicProperty);
   80: isset($o->publicProperty);
   81: echo "\n";
   82: echo $o->publicProperty;
   83: echo "\n";
   84: echo $o->getPublicProperty();
   85: echo "\n";
   86: echo $o->setPublicProperty('new publicProperty value via setter');
   87: echo "\n";
   88: echo $o->publicProperty;
   89: echo "\n";
   90: unset($o->publicProperty);
   91: $o->publicProperty = 'new publicProperty value via public access';
   92: echo "\n";
   93: var_export(isset($o->publicProperty));
   94: echo "\n";
   95: echo $o->publicProperty;
   96: echo "\n\n";
   97: 
   98: // verifying protected property
   99: echo $o->getProtectedProperty();
  100: echo "\n";
  101: $o->unsetProtectedProperty();
  102: var_export(isset($o->protectedProperty));
  103: echo "\n";
  104: echo $o->getProtectedProperty();
  105: echo "\n";
  106: echo $o->setProtectedProperty('new protectedProperty value via setter');
  107: echo "\n";
  108: var_export(isset($o->protectedProperty));
  109: echo "\n";
  110: echo $o->getProtectedProperty();
  111: echo "\n\n";
  112: 
  113: // verifying private property
  114: echo $o->getPrivateProperty();
  115: echo "\n";
  116: $o->unsetPrivateProperty();
  117: var_export(isset($o->privateProperty));
  118: echo "\n";
  119: echo $o->getPrivateProperty();
  120: echo "\n";
  121: echo $o->setPrivateProperty('new privateProperty value via setter');
  122: echo "\n";
  123: var_export(isset($o->privateProperty));
  124: echo "\n";
  125: echo $o->getPrivateProperty();
  126: echo "\n\n";
  127: 
  128: ?>
  129: 
  130: --EXPECTF--
  131: publicProperty set
  132: true
  133: __isset "publicProperty"
  134: __get "publicProperty"
  135: __get "publicProperty"
  136: __set "publicProperty" to "new publicProperty value via setter"
  137: new publicProperty value via setter
  138: __set "publicProperty" to "new publicProperty value via public access"
  139: true
  140: new publicProperty value via public access
  141: 
  142: protectedProperty set
  143: __isset "protectedProperty"false
  144: __get "protectedProperty"
  145: __set "protectedProperty" to "new protectedProperty value via setter"
  146: __isset "protectedProperty"true
  147: new protectedProperty value via setter
  148: 
  149: privateProperty set
  150: __isset "privateProperty"false
  151: __get "privateProperty"
  152: __set "privateProperty" to "new privateProperty value via setter"
  153: __isset "privateProperty"true
  154: new privateProperty value via setter

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