1: --TEST--
2: Test script to verify that magic methods should be called only once when accessing an unset property.
3: --CREDITS--
4: Marco Pivetta <ocramius@gmail.com>
5: --FILE--
6: <?php
7: class Test {
8: public $publicProperty;
9: protected $protectedProperty;
10: private $privateProperty;
11:
12: public function __construct() {
13: unset(
14: $this->publicProperty,
15: $this->protectedProperty,
16: $this->privateProperty
17: );
18: }
19:
20: function __get($name) {
21: echo '__get ' . $name . "\n";
22: return $this->$name;
23: }
24:
25: function __set($name, $value) {
26: echo '__set ' . $name . "\n";
27: $this->$name = $value;
28: }
29:
30: function __isset($name) {
31: echo '__isset ' . $name . "\n";
32: return isset($this->$name);
33: }
34: }
35:
36: $test = new Test();
37:
38: $test->nonExisting;
39: $test->publicProperty;
40: $test->protectedProperty;
41: $test->privateProperty;
42: isset($test->nonExisting);
43: isset($test->publicProperty);
44: isset($test->protectedProperty);
45: isset($test->privateProperty);
46: $test->nonExisting = 'value';
47: $test->publicProperty = 'value';
48: $test->protectedProperty = 'value';
49: $test->privateProperty = 'value';
50:
51: ?>
52:
53: --EXPECTF--
54: __get nonExisting
55:
56: Notice: Undefined property: Test::$nonExisting in %s on line %d
57: __get publicProperty
58:
59: Notice: Undefined property: Test::$publicProperty in %s on line %d
60: __get protectedProperty
61:
62: Notice: Undefined property: Test::$protectedProperty in %s on line %d
63: __get privateProperty
64:
65: Notice: Undefined property: Test::$privateProperty in %s on line %d
66: __isset nonExisting
67: __isset publicProperty
68: __isset protectedProperty
69: __isset privateProperty
70: __set nonExisting
71: __set publicProperty
72: __set protectedProperty
73: __set privateProperty
74:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>