好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP獲取對象屬性的三種方法實例分析

PHP獲取對象屬性的三種方法實例分析

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

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

今天查看yii源碼,發現yii\base\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_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相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP簡單遍歷對象示例
  • PHP var_dump遍歷對象屬性的函數與應用代碼
  • php面向對象中static靜態屬性和靜態方法的調用
  • php中類和對象:靜態屬性、靜態方法
  • PHP實現在對象之外訪問其私有屬性private及保護屬性protected的方法
  • php面向對象中static靜態屬性與方法的內存位置分析
  • PHP實現刪除多重數組對象屬性并重新賦值的方法
  • PHP 5.0對象模型深度探索之屬性和方法
  • PHP中的Iterator迭代對象屬性詳解
  • PHP面向對象程序設計之對象的遍歷操作示例

標簽:金華 綏化 呼倫貝爾 溫州 安康 紹興 萊蕪 清遠

巨人網絡通訊聲明:本文標題《PHP獲取對象屬性的三種方法實例分析》,本文關鍵詞  PHP,獲取,對象,屬,性的,三種,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP獲取對象屬性的三種方法實例分析》相關的同類信息!
  • 本頁收集關于PHP獲取對象屬性的三種方法實例分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 夜夜夜夜爽| 三年中文在线观看免费大全| 亚洲天堂视频在线播放| 极品尤物在线观看| 欧美精产国品一二三产品区别| 91精品国自产拍一区二区| 1级片网站| 亚洲国产成人影院播放| 日本一区二区在线看| 免费一级婬片色情毛片大全| 丰满少妇在线播放BD日韩电影| 亚洲色图27p| 中文无码亚洲一区二区蜜桃| 日本精品高清一区二区不卡| 丁香花图片| 97se亚洲国产综合在线| 曦月仙子动漫中番全集免费观看| 欧美虐乳| 日本老妇一级特黄aa大片| 欧美日韩精品视频一区二区三区| 日日躁夜夜躁夜夜揉人人视频| 章子怡三级全部电影| 男生把女生捅到爽| 天堂а√在线中文在线| 国内精品久久久久影院亚洲| 国产一级A片久久久免费看快餐| 韩国三级HD中文字幕天美傳媒| 99riAV在线精品国产亚洲| 快点啊哦用力太深了| juliaann在线观看| 久久99久久99精品免视看婷婷| 总受被多人玩弄np高H| 女主播喷水免费直播| 一级毛片韩国| 欧美日本另类xxx乱大交| 女厕 – 亚瑟| Gay欧美猛男粗爽Fuck| 涩涩97在线观看视频| 在车上被弄到高c| chinesefreepron| 男同桌玩我奶头我j扒我内衣内裤|