xref: /PHP-5.6/tests/classes/bug63462.phpt (revision a84a2d4a)
1--TEST--
2Test script to verify that magic methods should be called only once when accessing an unset property.
3--CREDITS--
4Marco Pivetta <ocramius@gmail.com>
5--FILE--
6<?php
7class 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;
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;
42isset($test->nonExisting);
43isset($test->publicProperty);
44isset($test->protectedProperty);
45isset($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
55Notice: Undefined property: Test::$nonExisting in %sbug63462.php on line %d
56__get publicProperty
57Notice: Undefined property: Test::$publicProperty in %sbug63462.php on line %d
58__get protectedProperty
59Notice: Undefined property: Test::$protectedProperty in %sbug63462.php on line %d
60__get privateProperty
61Notice: Undefined property: Test::$privateProperty in %sbug63462.php on line %d
62__isset nonExisting
63__isset publicProperty
64__isset protectedProperty
65__isset privateProperty
66__set nonExisting
67__set publicProperty
68__set protectedProperty
69__set privateProperty
70