????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.191 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/home/b8009/php-5.6.22/ext/reflection/tests/ |
Upload File : |
--TEST--
Reflection and property_exists()
--FILE--
<?php
class A
{
public $a = 1;
protected $b = 2;
private $c = 3;
public $empty;
public $init = 1;
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));
}
}
echo "===PROBLEMS===\n";
var_dump(property_exists(NULL, 'empty'));
var_dump(property_exists(25,'empty'));
var_dump(property_exists('',''));
var_dump(property_exists('A',''));
var_dump(property_exists('A','123'));
var_dump(property_exists('A','init'));
var_dump(property_exists('A','empty'));
var_dump(property_exists(new A, ''));
var_dump(property_exists(new A, '123'));
var_dump(property_exists(new A, 'init'));
var_dump(property_exists(new A, 'empty'));
?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
===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(true)
obj(A)::$c
bool(true)
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(true)
A::$c
bool(true)
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(true)
B::$c
bool(true)
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(true)
C::$c
bool(false)
C::$d
bool(true)
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(true)
obj(C)::$c
bool(false)
obj(C)::$d
bool(true)
obj(C)::$e
bool(false)
===PROBLEMS===
Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d
NULL
Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d
NULL
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
bool(true)
===DONE===