濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > PHP獲取對(duì)象屬性的三種方法實(shí)例分析

PHP獲取對(duì)象屬性的三種方法實(shí)例分析

熱門標(biāo)簽:智能電銷語音機(jī)器人資訊 打開百度地圖標(biāo)注 兼職做地圖標(biāo)注好賺錢嗎 山東電銷卡外呼系統(tǒng)原理是什么 亳州企業(yè)外呼系統(tǒng) 400 電話 辦理 地圖標(biāo)注怎么做商戶驗(yàn)證 蘇州外呼系統(tǒng)有效果嗎 海南外呼系統(tǒng)方案

本文實(shí)例講述了PHP獲取對(duì)象屬性的三種方法。分享給大家供大家參考,具體如下:

今天查看yii源碼,發(fā)現(xiàn)yii\base\Model中的attribute()方法是通過反射獲取對(duì)象的public non-static屬性。記得以前看到的代碼都是用get_object_vars()這個(gè)函數(shù)獲取的,昨天查看php文檔,發(fā)現(xiàn)還可以用foreach遍歷對(duì)象屬性。于是寫個(gè)例子練習(xí)下。

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;
      }
    }
  }
}

測(cè)試代碼一

$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 =>

可見,當(dāng)著三種方法用在類的外部時(shí),結(jié)果是一樣的。get_object_vars()和foreach是獲取到的是對(duì)象的public non-static屬性,而通過反射的話則需要手動(dòng)篩選出public non-static屬性。

測(cè)試代碼二

$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用在類內(nèi)部時(shí),private、protected、public的實(shí)例屬性都能獲取到。反射就不用說了,通過手動(dòng)篩選,各種類型的屬性都能獲取到。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP簡(jiǎn)單遍歷對(duì)象示例
  • PHP var_dump遍歷對(duì)象屬性的函數(shù)與應(yīng)用代碼
  • php面向?qū)ο笾衧tatic靜態(tài)屬性和靜態(tài)方法的調(diào)用
  • php中類和對(duì)象:靜態(tài)屬性、靜態(tài)方法
  • PHP實(shí)現(xiàn)在對(duì)象之外訪問其私有屬性private及保護(hù)屬性protected的方法
  • php面向?qū)ο笾衧tatic靜態(tài)屬性與方法的內(nèi)存位置分析
  • PHP實(shí)現(xiàn)刪除多重?cái)?shù)組對(duì)象屬性并重新賦值的方法
  • PHP 5.0對(duì)象模型深度探索之屬性和方法
  • PHP中的Iterator迭代對(duì)象屬性詳解
  • PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之對(duì)象的遍歷操作示例

標(biāo)簽:金華 綏化 呼倫貝爾 溫州 安康 紹興 萊蕪 清遠(yuǎn)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP獲取對(duì)象屬性的三種方法實(shí)例分析》,本文關(guān)鍵詞  PHP,獲取,對(duì)象,屬,性的,三種,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP獲取對(duì)象屬性的三種方法實(shí)例分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP獲取對(duì)象屬性的三種方法實(shí)例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    荔浦县| 汶川县| 永胜县| 扎鲁特旗| 灵宝市| 桦南县| 普宁市| 太和县| 灵石县| 墨脱县| 泗水县| 龙海市| 泸水县| 汉中市| 盐池县| 建水县| 基隆市| 陇南市| 新乡县| 兴义市| 定结县| 沛县| 曲沃县| 宜春市| 新宁县| 深水埗区| 内丘县| 满城县| 五河县| 定日县| 张家口市| 五大连池市| 璧山县| 昌宁县| 陇南市| 丹江口市| 德江县| 崇义县| 隆林| 呼伦贝尔市| 南江县|