重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关PHP中获取对象属性的方法有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联:从2013年成立为各行业开拓出企业自己的“网站建设”服务,为1000+公司企业提供了专业的成都网站设计、成都做网站、网页设计和网站推广服务, 按需网站策划由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。具体如下:
class TestClass { private $a; protected $b; public $c; public $d; public static $e; private function funcA() { } protected function funcB() { } public function funcC() { } public function getPropertyMethodOne() { echo "[get_object_vars]", PHP_EOL; $vars = get_object_vars($this); foreach ($vars as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } } public function getPropertyMethodTwo() { echo "[foreach object]", PHP_EOL; foreach ($this as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } } public function getPropertyMethodThree() { echo "[reflection]", PHP_EOL; $class = new ReflectionClass($this); foreach ($class->getProperties(ReflectionProperty::IS_PUBLIC) as $property) { if (!$property->isStatic()) { echo $property->getName(), ' => ', $property->getValue($this), PHP_EOL; } } } }
测试代码一
$obj = new TestClass(); echo "[get_object_vars]", PHP_EOL; $vars = get_object_vars($obj); foreach ($vars as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } echo "[foreach object]", PHP_EOL; foreach ($obj as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } echo "[reflection]", PHP_EOL; $class = new ReflectionClass($obj); foreach ($class->getProperties(ReflectionProperty::IS_PUBLIC) as $property) { if (!$property->isStatic()) { echo $property->getName(), ' => ', $property->getValue($obj), PHP_EOL; } }
输出:
[get_object_vars]
c =>
d =>
[foreach object]
c =>
d =>
[reflection]
c =>
d =>
可见,当着三种方法用在类的外部时,结果是一样的。get_object_vars()
和foreach是获取到的是对象的public non-static属性,而通过反射的话则需要手动筛选出public non-static属性。
测试代码二
$obj = new TestClass(); $obj->getPropertyMethodOne(); $obj->getPropertyMethodTwo(); $obj->getPropertyMethodThree();
输出
[get_object_vars]
a =>
b =>
c =>
d =>
[foreach object]
a =>
b =>
c =>
d =>
[reflection]
c =>
d =>
可见,get_object_vars()
和foreach用在类内部时,private、protected、public的实例属性都能获取到。反射就不用说了,通过手动筛选,各种类型的属性都能获取到。
上述就是小编为大家分享的PHP中获取对象属性的方法有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。