Commit: 1377942b6963f53c77226b8a68832183b9916426 Author: Marco Pivetta <ocram...@gmail.com> Fri, 26 Oct 2012 03:54:05 +0200 Committer: Lars Strojny <lstro...@php.net> Sun, 2 Dec 2012 19:47:09 +0100 Parents: 12de2e91d0f10f93e177378f84d1dcc1c03e1141 Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1377942b6963f53c77226b8a68832183b9916426 Log: Adding regression test for behavior of magic methods with unset public properties Verifies that after having unset a public property, any access to it, be it read or write, causes calls to public magic methods Signed-off-by: Marco Pivetta <ocram...@gmail.com> Changed paths: A tests/classes/unset_public_properties.phpt Diff: diff --git a/tests/classes/unset_public_properties.phpt b/tests/classes/unset_public_properties.phpt new file mode 100644 index 0000000..8c0096e --- /dev/null +++ b/tests/classes/unset_public_properties.phpt @@ -0,0 +1,74 @@ +--TEST-- +Un-setting public instance properties causes magic methods to be called when trying to access them from outside class scope +--FILE-- +<?php + +class Test +{ + public $testProperty = 'property set'; + + public function __get($name) + { + return '__get ' . $name; + } + + public function __set($name, $value) + { + $this->$name = $value; + echo '__set ' . $name . ' to ' . $value; + } + + public function __isset($name) + { + echo '__isset ' . $name; + return isset($this->$name); + } + + public function getTestProperty() + { + return $this->testProperty; + } + + public function setTestProperty($testProperty) + { + $this->testProperty = $testProperty; + } +} + +$o = new Test; + +echo $o->testProperty; +echo "\n"; +isset($o->testProperty); +echo "\n"; +unset($o->testProperty); +isset($o->testProperty); +echo "\n"; +echo $o->testProperty; +echo "\n"; +echo $o->getTestProperty(); +echo "\n"; +echo $o->setTestProperty('new value via setter'); +echo "\n"; +echo $o->testProperty; +echo "\n"; +unset($o->testProperty); +$o->testProperty = 'new value via public access'; +echo "\n"; +isset($o->testProperty); +echo "\n"; +echo $o->testProperty; + +?> +====DONE==== +--EXPECTF-- +property set + +__isset testProperty +__get testProperty +__get testProperty +__set testProperty to new value via setter +new value via setter +__set testProperty to new value via public access + +new value via public access -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php