Skip to content

Commit 627eb9e

Browse files
Ocramiuslstrojny
authored andcommitted
Adding tests for private and protected properties
1 parent 12f451c commit 627eb9e

File tree

2 files changed

+154
-73
lines changed

2 files changed

+154
-73
lines changed

tests/classes/unset_properties.phpt

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
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"__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"__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

tests/classes/unset_public_properties.phpt

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)