婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP獲取類私有屬性的3種方法

PHP獲取類私有屬性的3種方法

熱門標簽:黔江400電話如何辦理 地圖標注視頻廣告入駐 中原區電話機器人價格 電銷機器人便宜的有嗎 OMG地圖標注app ai電話機器人加盟代理 400電話鄭州申請 gps 地圖標注軟件 招標自動語音外呼系統

今天在推上看到一條獲取PHP類私有屬性的推文,感覺很有意思:

順著推文聯想,還有其他方式嗎?經過自己的測試及網上答案,總結出三種方法:

1. 反射

反射可以獲取類的詳細信息,要獲取私有屬性的值,只需將對應屬性的ReflectionProperty實例設置為可訪問再取值即可。示例代碼如下:

namespace tlanyan;

class Foo {
 private $bar = "Foo bar!";
}

// 獲取反射類及反射屬性
$class = new \ReflectionClass(Foo::class);
$property = $class->getProperty("bar");
// 設置屬性可訪問
$property->setAccessible(true);

$foo = new Foo;
// 獲取對象屬性值
// 注意:只能通過 ReflectionProperty 實例的 getValue 方法訪問
// 不能這樣直接訪問: $foo->bar;
echo $property->getValue($foo), PHP_EOL:
// 輸出: Foo bar!

本人之前寫過“PHP回顧之反射”一文,比較詳細的介紹了反射及用法,有興趣的閱讀參考。

2. 轉換成數組

這種方法用將對象強制轉換成數組,再通過鍵獲取其值。示例代碼如下:

class Foo {
 private $bar = "Foo bar!";
}

$foo = new Foo;
// 強制轉型
$attrs = (array)$foo;
// 拼接key,注意 "\0" 不能改成單引號!
$key = "\0" . Foo::class . "\0" . "bar";
echo $attrs[$key], PHP_EOL;
// 輸出: Foo bar!

上述代碼中key的拼接方式比較詭異,key規則如下:

  1. public屬性, key是 屬性名;
  2. protected屬性,key是 \0*\0屬性名;
  3. private屬性, key是 \0類名\0屬性名。

注意 \0 是一個字符(不是兩個),對應的ASCII碼是數字0。編程時要用雙引號將其引起來。不能使用單引號,否則轉義失效,那就是兩個字符。如果你有C語言基礎,應該知道 \0 就是字符串的結束符。這個符號直接輸出不會顯示,但可以通過strlen或者ord讓其現形:

foreach ($attrs as $key => $value) {
 echo "key:$key", ", key length:", strlen($key), ", ascii: ";
 for ($i = 0; $i  strlen($key); ++ $i) {
 echo ord($key[$i]), " "; 
 }
 echo PHP_EOL;
}
// 輸出
// key:Foobar, key length:8, ascii: 0 70 111 111 0 98 97 114
// Foobar 有6個字符,加上兩個不顯示字符,所以長度是8

還需要注意拼接private屬性時類名應該是 “完全限定類名” ,建議通過Foo::class的方式獲取。

與強制轉換成數組類似的另一種方法是serialize,但是serialize比較慢,并且序列化后的字符串更難辨認結構和處理,不建議使用。

3. 閉包

文章開頭的推特截圖已經展示了閉包的用法,其中call方法在PHP7中引入,另一個是PHP5.4引入的bindTocallbindTo的用法示例如下:

namespace tlanyan;

class Foo {
 private $bar = "Foo bar!";
}

$foo = new Foo;
// 閉包(匿名函數)是PHP5.3引入的功能
$closure = function() { return $this->bar; };
// PHP5.4起支持bindTo方法
$method = $closure->bindTo($foo, Foo::class);
echo $method(), PHP_EOL;

// PHP7引入call方法,可綁定this直接執行
echo $closure->call($foo), PHP_EOL;

bindTo方法的第二個參數注意傳入對象的 “完全限定類名”,指示函數應該放置在該類的作用域下,從而可以訪問私有屬性。

總結

性能: 數組 > 反射 > 閉包

易用性: 閉包 > 數組 > 反射

推薦: 閉包 > 反射 > 數組

以上就是PHP獲取類私有屬性的3種方法的詳細內容,更多關于PHP獲取類私有屬性的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHPUnit測試私有屬性和方法功能示例
  • PHP實現在對象之外訪問其私有屬性private及保護屬性protected的方法

標簽:池州 濟源 哈密 那曲 日照 阿里 北京 孝感

巨人網絡通訊聲明:本文標題《PHP獲取類私有屬性的3種方法》,本文關鍵詞  PHP,獲取,類,私有,屬,性的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP獲取類私有屬性的3種方法》相關的同類信息!
  • 本頁收集關于PHP獲取類私有屬性的3種方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人国产视频在线观看| 美女高潮久久久| 欧美日产国产精品| 欧美亚洲国产一区二区三区va | 日韩毛片一二三区| 精品国产欧美一区二区| 国产+成+人+亚洲欧洲自线| 国产在线麻豆精品观看| 欧美一区二区三区视频| 国产色婷婷亚洲99精品小说| 亚洲国产精华液网站w| 在线亚洲人成电影网站色www| 欧美情侣在线播放| 欧美日韩国产高清一区二区三区| 欧美高清在线一区二区| 性久久久久久久久| 欧美大胆一级视频| 一区二区三区久久| 国产伦精品一区二区三区视频青涩 | 精品伊人久久久久7777人| 国产精品99精品久久免费| 91浏览器在线视频| 毛片一区二区三区| 欧美精品高清视频| 国产精品美女久久久久av爽李琼| 91老师片黄在线观看| 2021久久国产精品不只是精品| 亚洲精品乱码久久久久久久久 | 亚洲123区在线观看| 国产精品一区二区久久精品爱涩| 欧美色电影在线| 国产99一区视频免费| 欧美一级淫片007| 亚洲黄色免费网站| 久久五月婷婷丁香社区| 日韩精品亚洲一区二区三区免费| 91影视在线播放| 国产高清一区日本| 日韩欧美色综合| 日韩中文字幕区一区有砖一区| 久久久国产精品麻豆| 午夜精品一区二区三区三上悠亚| 白白色亚洲国产精品| 精品午夜一区二区三区在线观看 | 久久久国际精品| 麻豆成人综合网| 亚洲裸体在线观看| 亚洲精品一区二区三区99| 免费高清成人在线| 欧美日本国产一区| 久久国产麻豆精品| 日韩精品中文字幕在线不卡尤物| 成人h动漫精品| 亚洲精品久久久蜜桃| 色先锋久久av资源部| 成人中文字幕合集| 亚洲视频你懂的| 91国产丝袜在线播放| 色偷偷久久一区二区三区| 中文字幕中文在线不卡住| 91久久久免费一区二区| 色婷婷一区二区| 亚洲主播在线播放| 欧美影视一区在线| 9l国产精品久久久久麻豆| 一区二区三区欧美日| 国产在线精品视频| 黄色资源网久久资源365| 国产欧美视频在线观看| 日韩视频免费直播| 欧美一级xxx| 国产福利91精品一区二区三区| 色狠狠色狠狠综合| 韩国av一区二区三区四区| 国产精品伦一区二区三级视频| 中文字幕av一区 二区| 91精品1区2区| 激情久久五月天| 不卡的av网站| 婷婷夜色潮精品综合在线| 久久综合久久综合亚洲| 国产精品大尺度| 日韩亚洲欧美在线| 成人中文字幕电影| 欧美日韩亚洲综合一区| 精品一区二区免费在线观看| 欧美性大战久久| 欧美大胆一级视频| av电影天堂一区二区在线| 国产亚洲综合在线| 亚洲男同性视频| 亚洲国产成人私人影院tom| 亚洲国产精品一区二区久久| 亚洲v中文字幕| 中文字幕一区二区视频| 不卡欧美aaaaa| 欧美一区二区国产| 在线影院国内精品| 日韩精品资源二区在线| 欧美精品一级二级| 日本高清成人免费播放| 日韩欧美一级片| 欧美日韩高清一区二区三区| 成人黄色片在线观看| 欧美一区二区久久| 91精品久久久久久久久99蜜臂| 久久福利资源站| 欧美在线视频你懂得| 99视频一区二区| 国产一区二区三区黄视频| 日韩av午夜在线观看| 亚洲激情av在线| 懂色av一区二区三区免费看| 国内外成人在线| 一区二区三区**美女毛片| 国产一区 二区| 国产成人综合自拍| 中文字幕亚洲一区二区av在线| 久久99久久99| 韩国女主播一区二区三区| 捆绑紧缚一区二区三区视频| 日韩欧美电影一二三| 亚洲国产成人va在线观看天堂| 国产精品久久久久久亚洲伦 | 91色视频在线| 国产精品天美传媒| 国产精品乱码人人做人人爱| 欧美视频一区二区三区在线观看 | 亚洲欧美另类图片小说| 国产精品久久夜| 国产a精品视频| 91色九色蝌蚪| 欧美色图12p| 精品国偷自产国产一区| 欧美激情在线一区二区| 亚洲色图.com| 日本成人在线视频网站| 狠狠色丁香久久婷婷综合丁香| 亚洲激情图片qvod| 亚洲成人激情自拍| a美女胸又www黄视频久久| 色吧成人激情小说| 亚洲国产精品久久久久秋霞影院| 毛片av一区二区| 日韩欧美亚洲另类制服综合在线| 亚洲一区二区三区不卡国产欧美 | 精品国产伦一区二区三区观看方式| 精品日韩一区二区三区| 欧美日韩成人综合在线一区二区| 日韩美女久久久| 亚洲精品国久久99热| 在线观看免费亚洲| 日韩一区二区精品| 色婷婷av一区二区三区软件 | 国产一区二区精品久久| 久久久久久久久一| 亚洲成人福利片| 日韩精品资源二区在线| 亚洲欧美日韩国产综合| 成人激情免费网站| 欧美人与z0zoxxxx视频| 免播放器亚洲一区| 欧美性大战久久久久久久蜜臀 | 91美女在线看| 亚洲444eee在线观看| 国产成人精品亚洲日本在线桃色 | 国产亚洲精品久| 久久久久亚洲蜜桃| 久久久久久亚洲综合| 国产一区二区不卡| 樱花草国产18久久久久| 日本不卡一二三| 国产成人综合精品三级| 亚洲精品乱码久久久久久| 精品一区二区三区不卡| 91一区二区在线| 国产亚洲一二三区| 日韩和的一区二区| 国产欧美一区二区精品久导航| 奇米影视在线99精品| 91蜜桃婷婷狠狠久久综合9色| 亚洲老妇xxxxxx| 高清shemale亚洲人妖| 亚洲国产日韩在线一区模特| 日韩一卡二卡三卡四卡| 91成人免费网站| 国产精品主播直播| 五月激情综合网| 亚洲另类中文字| 日韩欧美一区二区久久婷婷| 色88888久久久久久影院按摩| 久久成人免费电影| 性做久久久久久免费观看 | 麻豆精品一区二区三区| 亚洲欧美成aⅴ人在线观看| 久久久久久**毛片大全| 在线播放欧美女士性生活| 一本一道综合狠狠老| 韩国欧美国产1区| 蜜桃视频一区二区三区在线观看|