亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 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種方法的相關信息資訊供網民參考!
  • 推薦文章
    国产一区免费观看| 中文字幕一区二区三区精彩视频| 成人免费观看视频| 国产精品自拍亚洲| 青青久久精品| 国产一区免费观看| 精品国产一级毛片| 成人免费高清视频| 青青久久国产成人免费网站| 精品国产亚一区二区三区| 精品视频在线观看免费 | 国产精品免费久久| 日韩在线观看视频免费| 欧美a级成人淫片免费看| 久久成人综合网| 免费毛片播放| 日本在线不卡视频| 国产视频久久久久| 九九久久国产精品| 九九九国产| 成人在免费观看视频国产| 尤物视频网站在线| 国产网站免费观看| 一a一级片| 国产伦久视频免费观看 视频| 国产一区二区精品久久| 欧美激情中文字幕一区二区| 久久成人综合网| 黄色短视屏| 国产伦理精品| 高清一级片| 国产精品自拍一区| 精品久久久久久综合网| 国产一区二区精品久久91| 香蕉视频久久| 欧美激情一区二区三区中文字幕| 国产a一级| 国产91丝袜在线播放0| 天天做人人爱夜夜爽2020毛片| 美女免费精品视频在线观看| 四虎影视久久久| 国产91丝袜在线播放0| 日本特黄特黄aaaaa大片| 亚洲精品影院| 黄视频网站在线观看| 日本伦理黄色大片在线观看网站| 欧美大片一区| 久草免费在线观看| 日韩一级精品视频在线观看| 国产一区二区高清视频| 亚洲wwwwww| 精品视频免费看| 韩国三级视频在线观看| 亚欧乱色一区二区三区| 精品国产香蕉伊思人在线又爽又黄| 韩国三级香港三级日本三级| 精品久久久久久中文| 四虎久久影院| 精品久久久久久影院免费| 国产视频一区二区三区四区| 国产麻豆精品高清在线播放| 午夜在线影院| 日本特黄特色aaa大片免费| 欧美一级视频免费观看| 久久久成人网| 天天做人人爱夜夜爽2020毛片| 欧美a免费| 高清一级淫片a级中文字幕 | 成人a大片高清在线观看| 精品久久久久久影院免费| 黄色短视屏| 亚洲女初尝黑人巨高清在线观看| 国产视频一区在线| 成人免费福利片在线观看| 亚洲精品中文字幕久久久久久| 久久久久久久久综合影视网| 午夜欧美成人香蕉剧场| 国产a免费观看| 欧美一区二区三区性| 99久久精品国产国产毛片| 国产91精品露脸国语对白| 九九九在线视频| 可以在线看黄的网站| 国产福利免费观看| 精品国产香蕉在线播出| 成人在免费观看视频国产| 国产91精品露脸国语对白| 精品久久久久久影院免费| 国产韩国精品一区二区三区| 国产极品精频在线观看| 国产麻豆精品免费密入口| 精品在线视频播放| 欧美国产日韩精品| 一级女性大黄生活片免费| 四虎久久精品国产| a级毛片免费全部播放| 韩国毛片免费大片| 久久99这里只有精品国产| 99热热久久| 高清一级片| 国产一区二区精品| 亚洲女初尝黑人巨高清在线观看| 色综合久久天天综合观看| 一级片免费在线观看视频| 欧美一区二区三区在线观看| 黄色福利片| 韩国三级一区| 国产成人精品影视| 国产视频在线免费观看| 亚欧乱色一区二区三区| 美国一区二区三区| 99热精品在线| 精品国产香蕉伊思人在线又爽又黄| 韩国三级视频在线观看| 欧美另类videosbestsex视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 中文字幕97| 成人影视在线播放| 欧美激情在线精品video| 天天做日日爱夜夜爽| 国产一区二区精品尤物| 一级片片| 国产网站免费观看| 你懂的在线观看视频| 久久精品大片| 国产成a人片在线观看视频 | 美女免费精品视频在线观看| 久久国产一久久高清| 午夜家庭影院| 国产伦久视频免费观看 视频| 国产a视频| 久草免费在线观看| 麻豆午夜视频| 日韩专区一区| 欧美激情中文字幕一区二区| 欧美一级视频免费观看| 国产不卡精品一区二区三区| 日韩字幕在线| 日韩免费在线| 一本高清在线| 国产a一级| 成人免费观看视频| 一级女性大黄生活片免费| 91麻豆国产福利精品| 久久99青青久久99久久| 精品国产一区二区三区精东影业| 一本高清在线| 日韩av成人| 中文字幕97| 国产亚洲精品aaa大片| a级毛片免费全部播放| 青草国产在线观看| 亚洲女人国产香蕉久久精品| 精品视频免费观看| 免费国产在线观看不卡| 日本免费乱理伦片在线观看2018| 久久99这里只有精品国产| 亚洲不卡一区二区三区在线| 国产高清视频免费观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 色综合久久天天综线观看| 成人a大片在线观看| 亚洲精品影院久久久久久| 日韩在线观看视频免费| 久久99青青久久99久久| 91麻豆精品国产综合久久久| 黄色免费三级| 四虎影视精品永久免费网站| 香蕉视频久久| 免费国产在线观看不卡| 欧美1卡一卡二卡三新区| 91麻豆爱豆果冻天美星空| 精品久久久久久中文字幕2017| 夜夜操网| 国产麻豆精品高清在线播放| 国产a一级| 夜夜操网| 999久久久免费精品国产牛牛| 午夜家庭影院| 亚洲精品影院| 青青久久精品国产免费看| 高清一级毛片一本到免费观看| 天天做日日爱| 一级女性全黄久久生活片| 日本免费区| 成人免费网站久久久| 久久99爰这里有精品国产| 日韩免费片| 麻豆系列 在线视频| 可以免费看污视频的网站| 欧美国产日韩在线| 国产精品免费久久| 日本伦理黄色大片在线观看网站| 91麻豆精品国产自产在线观看一区 | 精品国产一区二区三区久| 亚州视频一区二区| 欧美日本免费| 二级片在线观看| 色综合久久天天综线观看| 国产激情一区二区三区|