首页 > 作文

PHP获取对象属性的三种方法实例分析

更新时间:2023-04-06 09:05:39 阅读: 评论:0

本文实例讲述了php获取对象属性的三种方法。分享给大家供大家参考,具体如下:

今天查看yii源码,发现yii\ba\model中的attribute()方法是通过反射获取对象的public non-static属性。记得以前看到的代码都是用get_object_vars()这个函数获取的,昨天查看php文档,发现还可以用foreach遍历对象属性。于是写个例子练习下。

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_o初中作文教案bject_vars]", php_eol;    $vars = get_object_vars($this);    foreach ($vars as $k => $v) {      echo $k, ' => ', $v, php_eol;    }  }  public function getp制药工程学ropertymethodtwo() {    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->getpro包衣perties(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相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《php数组(array)操作技巧大全》、《php基本语法入门教程》、《php运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家php程序设计有所帮助。

本文发布于:2023-04-06 09:05:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/d8be29cffa2704ba04c30ea7874cfa98.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP获取对象属性的三种方法实例分析.doc

本文 PDF 下载地址:PHP获取对象属性的三种方法实例分析.pdf

标签:属性   对象   反射   都能
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图