mirror of
https://github.com/php/php-src.git
synced 2026-03-26 09:12:14 +01:00
- Add new test
This commit is contained in:
191
ext/reflection/tests/property_exists.phpt
Executable file
191
ext/reflection/tests/property_exists.phpt
Executable file
@@ -0,0 +1,191 @@
|
||||
--TEST--
|
||||
ZE2 property_exists()
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class A
|
||||
{
|
||||
public $a = 1;
|
||||
protected $b = 2;
|
||||
private $c = 3;
|
||||
|
||||
function __toString()
|
||||
{
|
||||
return 'obj(' . get_class($this) . ')';
|
||||
}
|
||||
|
||||
static function test($oc, $props)
|
||||
{
|
||||
echo '===' . __CLASS__ . "===\n";
|
||||
foreach($props as $p2) {
|
||||
echo $oc, '::$' , $p2, "\n";
|
||||
var_dump(property_exists($oc, $p2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class B extends A
|
||||
{
|
||||
private $c = 4;
|
||||
|
||||
static function test($oc, $props)
|
||||
{
|
||||
echo '===' . __CLASS__ . "===\n";
|
||||
foreach($props as $p2) {
|
||||
echo $oc, '::$' , $p2, "\n";
|
||||
var_dump(property_exists($oc, $p2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class C extends B
|
||||
{
|
||||
private $d = 5;
|
||||
|
||||
static function test($oc, $props)
|
||||
{
|
||||
echo '===' . __CLASS__ . "===\n";
|
||||
foreach($props as $p2) {
|
||||
echo $oc, '::$' , $p2, "\n";
|
||||
var_dump(property_exists($oc, $p2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$oA = new A;
|
||||
$oA->e = 6;
|
||||
|
||||
$oC = new C;
|
||||
|
||||
$pc = array($oA, 'A', 'B', 'C', $oC);
|
||||
$pr = array('a', 'b', 'c', 'd', 'e');
|
||||
|
||||
foreach($pc as $p1) {
|
||||
if (is_object($p1)) {
|
||||
$p1->test($p1, $pr);
|
||||
} else {
|
||||
$r = new ReflectionMethod($p1, 'test');
|
||||
$r->invoke(NULL, $p1, $pr);
|
||||
}
|
||||
echo "===GLOBAL===\n";
|
||||
foreach($pr as $p2) {
|
||||
echo $p1, '::$' , $p2, "\n";
|
||||
var_dump(property_exists($p1, $p2));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
<?php exit(0); ?>
|
||||
--EXPECT--
|
||||
===A===
|
||||
obj(A)::$a
|
||||
bool(true)
|
||||
obj(A)::$b
|
||||
bool(true)
|
||||
obj(A)::$c
|
||||
bool(true)
|
||||
obj(A)::$d
|
||||
bool(false)
|
||||
obj(A)::$e
|
||||
bool(true)
|
||||
===GLOBAL===
|
||||
obj(A)::$a
|
||||
bool(true)
|
||||
obj(A)::$b
|
||||
bool(false)
|
||||
obj(A)::$c
|
||||
bool(false)
|
||||
obj(A)::$d
|
||||
bool(false)
|
||||
obj(A)::$e
|
||||
bool(true)
|
||||
===A===
|
||||
A::$a
|
||||
bool(true)
|
||||
A::$b
|
||||
bool(true)
|
||||
A::$c
|
||||
bool(true)
|
||||
A::$d
|
||||
bool(false)
|
||||
A::$e
|
||||
bool(false)
|
||||
===GLOBAL===
|
||||
A::$a
|
||||
bool(true)
|
||||
A::$b
|
||||
bool(false)
|
||||
A::$c
|
||||
bool(false)
|
||||
A::$d
|
||||
bool(false)
|
||||
A::$e
|
||||
bool(false)
|
||||
===B===
|
||||
B::$a
|
||||
bool(true)
|
||||
B::$b
|
||||
bool(true)
|
||||
B::$c
|
||||
bool(true)
|
||||
B::$d
|
||||
bool(false)
|
||||
B::$e
|
||||
bool(false)
|
||||
===GLOBAL===
|
||||
B::$a
|
||||
bool(true)
|
||||
B::$b
|
||||
bool(false)
|
||||
B::$c
|
||||
bool(false)
|
||||
B::$d
|
||||
bool(false)
|
||||
B::$e
|
||||
bool(false)
|
||||
===C===
|
||||
C::$a
|
||||
bool(true)
|
||||
C::$b
|
||||
bool(true)
|
||||
C::$c
|
||||
bool(false)
|
||||
C::$d
|
||||
bool(true)
|
||||
C::$e
|
||||
bool(false)
|
||||
===GLOBAL===
|
||||
C::$a
|
||||
bool(true)
|
||||
C::$b
|
||||
bool(false)
|
||||
C::$c
|
||||
bool(false)
|
||||
C::$d
|
||||
bool(false)
|
||||
C::$e
|
||||
bool(false)
|
||||
===C===
|
||||
obj(C)::$a
|
||||
bool(true)
|
||||
obj(C)::$b
|
||||
bool(true)
|
||||
obj(C)::$c
|
||||
bool(false)
|
||||
obj(C)::$d
|
||||
bool(true)
|
||||
obj(C)::$e
|
||||
bool(false)
|
||||
===GLOBAL===
|
||||
obj(C)::$a
|
||||
bool(true)
|
||||
obj(C)::$b
|
||||
bool(false)
|
||||
obj(C)::$c
|
||||
bool(false)
|
||||
obj(C)::$d
|
||||
bool(false)
|
||||
obj(C)::$e
|
||||
bool(false)
|
||||
===DONE===
|
||||
Reference in New Issue
Block a user