????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.133.107.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===