2 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
與私有屬性一樣,不能從對(duì)象的內(nèi)部上下文外部訪問受保護(hù)的屬性。但是,受保護(hù)屬性和私有屬性的區(qū)別在于,擴(kuò)展對(duì)象可以查看父級(jí)的受保護(hù)屬性,但不能查看私有屬性。
如果出于任何原因必須直接訪問受保護(hù)的屬性,請(qǐng)擴(kuò)展目標(biāo)對(duì)象并提供 getter 方法:
class MyExtendingClass extends WC_Product_Simple {
public function getData() {
return $this->data;
}
}
話雖如此,該類應(yīng)該已經(jīng)擴(kuò)展了一個(gè)公開方法的父對(duì)象。這可能就是你要找的。在這種情況下,只需改為執(zhí)行以下命令:WC_Product_Simpleget_data()
$data = $package['contents']['abc123']['data']->get_data();

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
B.弗萊明有比這更好的答案,但我仍然想分享我在看到他的回應(yīng)之前所想到的。
首先,我將對(duì)象轉(zhuǎn)換為數(shù)組。這從對(duì)象中獲取,并使其成為受保護(hù)的陣列密鑰,如下所示。[key:protected][ * key]
然后可以像這樣訪問受保護(hù)的數(shù)組密鑰(必須使用雙引號(hào),因?yàn)樗贿m用于單引號(hào))。$my_array["\0*\0key"]
所以我的解決方案是這樣的:
$data_array = (array)$package['contents']['abc123']['data']; // Cast object to array
$name = $data_array["\0*\0data"]['name'];
- 2 回答
- 0 關(guān)注
- 147 瀏覽
添加回答
舉報(bào)