第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP 訪問對(duì)象中的受保護(hù)密鑰返回空

PHP 訪問對(duì)象中的受保護(hù)密鑰返回空

PHP
暮色呼如 2022-09-03 16:26:30
我為WooCommerce編寫了一個(gè)運(yùn)輸插件,當(dāng)我嘗試獲取受保護(hù)密鑰([key:protected])的值時(shí),它會(huì)返回空的。我們?nèi)绾螐臄?shù)組或?qū)ο笾蝎@取受保護(hù)密鑰的值?具體來(lái)說(shuō),在woocommerce_shipping_init的calculate_shipping函數(shù)中,它傳遞$package,這是一個(gè)數(shù)組,其中還包含一些對(duì)象,并且某些對(duì)象鍵受到保護(hù)。所以$package看起來(lái)像這樣(這是一個(gè)簡(jiǎn)化版本):Array(    [contents] => Array        (            [abc123] => Array                (                    [quantity] => 1                    [data] => WC_Product_Simple Object                        (                            [object_type:protected] => product                            [data:protected] => Array                                (                                    [name] => Carnal Seed CD and Study Guide - Oil Merchant Series                                    [slug] => carnal-seed-cd-and-study-guide-oil-merchant-series                                )                        )                )        ))因此,當(dāng)我嘗試獲取 [name] 或 [slug] 時(shí),我得到 [data:protected] 對(duì)象的空值(因此 [name] 和 [slug] 不存在)。例如:$data = $package['contents']['abc123']['data']->data; // $data returns empty那么,我們?nèi)绾螐臄?shù)組或?qū)ο笾蝎@取受保護(hù)密鑰的值呢?
查看完整描述

2 回答

?
夢(mèng)里花落0921

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();


查看完整回答
反對(duì) 回復(fù) 2022-09-03
?
森林海

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'];


查看完整回答
反對(duì) 回復(fù) 2022-09-03
  • 2 回答
  • 0 關(guān)注
  • 147 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)