📄 property_exists.phpt
字号:
--TEST--Reflection and property_exists()--SKIPIF--<?php extension_loaded('reflection') or die('skip'); ?>--FILE--<?phpclass 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)::$abool(true)obj(A)::$bbool(true)obj(A)::$cbool(true)obj(A)::$dbool(false)obj(A)::$ebool(true)===GLOBAL===obj(A)::$abool(true)obj(A)::$bbool(false)obj(A)::$cbool(false)obj(A)::$dbool(false)obj(A)::$ebool(true)===A===A::$abool(true)A::$bbool(true)A::$cbool(true)A::$dbool(false)A::$ebool(false)===GLOBAL===A::$abool(true)A::$bbool(false)A::$cbool(false)A::$dbool(false)A::$ebool(false)===B===B::$abool(true)B::$bbool(true)B::$cbool(true)B::$dbool(false)B::$ebool(false)===GLOBAL===B::$abool(true)B::$bbool(false)B::$cbool(false)B::$dbool(false)B::$ebool(false)===C===C::$abool(true)C::$bbool(true)C::$cbool(false)C::$dbool(true)C::$ebool(false)===GLOBAL===C::$abool(true)C::$bbool(false)C::$cbool(false)C::$dbool(false)C::$ebool(false)===C===obj(C)::$abool(true)obj(C)::$bbool(true)obj(C)::$cbool(false)obj(C)::$dbool(true)obj(C)::$ebool(false)===GLOBAL===obj(C)::$abool(true)obj(C)::$bbool(false)obj(C)::$cbool(false)obj(C)::$dbool(false)obj(C)::$ebool(false)===PROBLEMS===Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %dNULLWarning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %dNULLbool(false)bool(false)bool(false)bool(true)bool(true)bool(false)bool(false)bool(true)bool(true)===DONE===
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -