개체의 보호 된 키에 액세스하는 PHP가 빈 반환

jsherk

WooCommerce에 대한 배송 플러그인을 작성 중이며 보호 된 키 ([key : protected])의 값을 얻으려고하면 빈 값을 반환합니다. 배열이나 객체에서 보호 된 키의 값을 어떻게 얻습니까?

특히, woocommerce_shipping_init의 calculate_shipping 함수에서 $ package를 전달합니다. $ package는 일부 개체도 포함하는 배열이며 일부 개체 키는 보호됩니다. 따라서 $ package는 다음과 같습니다 (간단한 버전입니다).

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

따라서 [name] 또는 [slug]를 얻으려고 할 때 [data : protected] 개체에 대해 빈 값을 다시 얻습니다 (따라서 [name] 및 [slug]가 존재하지 않음). 예를 들면 :

$data = $package['contents']['abc123']['data']->data; // $data returns empty

그렇다면 배열이나 객체에서 보호 된 키의 값을 어떻게 얻습니까?

B. 플레밍

보호 된 속성은 개인 속성과 마찬가지로 개체의 내부 컨텍스트 외부에서 액세스 할 수 없습니다. 그러나 보호 속성과 개인 속성을 구별하는 것은 확장 개체가 부모의 보호 속성을 볼 수 있지만 개인 속성 은 볼 수 없다는 것입니다.

어떤 이유로 든 보호 된 속성에 직접 액세스해야하는 경우 대상 개체를 확장하고 getter 메서드를 제공합니다.

class MyExtendingClass extends WC_Product_Simple {
    public function getData() {
        return $this->data;
    }
}

즉, 클래스 WC_Product_Simple는 이미 get_data()메서드 를 노출하는 부모 개체를 확장해야합니다 . 이것은 당신이 찾고있는 것일 수 있습니다. 이 경우 대신 다음을 실행하십시오.

$data = $package['contents']['abc123']['data']->get_data();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

API 호출에서 반환 된 객체의 값에 액세스하는 방법

분류에서Dev

Ajax 호출에서 반환 된 객체의 데이터에 액세스하는 방법

분류에서Dev

Ajax 호출에서 반환 된 객체의 데이터에 액세스하는 방법

분류에서Dev

기존 기본 개체의 보호 된 멤버에 액세스

분류에서Dev

다음 ajax 호출에서 하나의 ajax 호출에서 반환 된 변수에 액세스하는 방법

분류에서Dev

Android에서 예기치 않은 결과를 반환하는 캐스팅 된 개체의 속성에 액세스

분류에서Dev

JSON 개체에서 반환 된 값에 액세스하는 방법

분류에서Dev

클래스 (PHP)에서 개인 / 보호 된 변수에 액세스하는 적절한 방법

분류에서Dev

반환 된 JSON의 속성에 액세스하는 AngularJS

분류에서Dev

httpOnly 플래그가 false로 설정된 개발자 도구에 쿠키가 나열되어 있어도 document.cookie에 액세스하면 빈 문자열이 반환됩니다.

분류에서Dev

Java-호출 가능한 스레드에서 반환 된 배열의 가시성을 보장하는 방법

분류에서Dev

bitcoinrpc 객체에 대한 반환 된 getminininfo 호출의 속성에 액세스

분류에서Dev

API 호출에서 반환 된 JSON 개체의 데이터에 액세스하려면 어떻게해야합니까?

분류에서Dev

감속기가 예상 된 빈 개체를 반환하지 않습니다.

분류에서Dev

React useState를 사용하여 fetch API에서 반환 된 배열의 키 값에 액세스하는 방법

분류에서Dev

체계-빈을 반환하는 함수에 전달 된 목록

분류에서Dev

가변 개체 이름을 사용하여 중첩 된 개체의 키에 액세스

분류에서Dev

다른 패키지 내에 클래스가 정의되어있는 개체의 보호 된 필드에 "직접 액세스"가 허용되는 이유는 무엇입니까?

분류에서Dev

개체 내의 배열 내에서 중첩 된 개체에 액세스하는 데 문제가 있습니다.

분류에서Dev

PHP API 호출을 크론 작업으로 전환하고 반환 된 값에 액세스

분류에서Dev

힙의 객체에서 반환 된 c_str에 액세스하여 가비지 값을 얻는 이유는 무엇입니까?

분류에서Dev

PHP에서 개체의 보호 된 속성 값을 얻는 방법

분류에서Dev

컴포넌트의 액션 생성자로부터 반환 된 정보에 액세스하면 Flux가 중단됩니까?

분류에서Dev

내 개체가 공통 기본 클래스에 정의 된 다른 개체의 보호 된 멤버에 액세스 할 수없는 이유는 무엇입니까?

분류에서Dev

PowerShell ForEach 개체에서 반환 된 값에 액세스

분류에서Dev

공장에서 반환 된 개체에 액세스

분류에서Dev

중첩 된 개체의 키 또는 값에 액세스

분류에서Dev

xsl : evaluate에 의해 반환 된 빈 시퀀스 처리

분류에서Dev

암호로 보호 된 키가있는 PHP의 openssl_open에 해당하는 Java는 무엇입니까?

Related 관련 기사

  1. 1

    API 호출에서 반환 된 객체의 값에 액세스하는 방법

  2. 2

    Ajax 호출에서 반환 된 객체의 데이터에 액세스하는 방법

  3. 3

    Ajax 호출에서 반환 된 객체의 데이터에 액세스하는 방법

  4. 4

    기존 기본 개체의 보호 된 멤버에 액세스

  5. 5

    다음 ajax 호출에서 하나의 ajax 호출에서 반환 된 변수에 액세스하는 방법

  6. 6

    Android에서 예기치 않은 결과를 반환하는 캐스팅 된 개체의 속성에 액세스

  7. 7

    JSON 개체에서 반환 된 값에 액세스하는 방법

  8. 8

    클래스 (PHP)에서 개인 / 보호 된 변수에 액세스하는 적절한 방법

  9. 9

    반환 된 JSON의 속성에 액세스하는 AngularJS

  10. 10

    httpOnly 플래그가 false로 설정된 개발자 도구에 쿠키가 나열되어 있어도 document.cookie에 액세스하면 빈 문자열이 반환됩니다.

  11. 11

    Java-호출 가능한 스레드에서 반환 된 배열의 가시성을 보장하는 방법

  12. 12

    bitcoinrpc 객체에 대한 반환 된 getminininfo 호출의 속성에 액세스

  13. 13

    API 호출에서 반환 된 JSON 개체의 데이터에 액세스하려면 어떻게해야합니까?

  14. 14

    감속기가 예상 된 빈 개체를 반환하지 않습니다.

  15. 15

    React useState를 사용하여 fetch API에서 반환 된 배열의 키 값에 액세스하는 방법

  16. 16

    체계-빈을 반환하는 함수에 전달 된 목록

  17. 17

    가변 개체 이름을 사용하여 중첩 된 개체의 키에 액세스

  18. 18

    다른 패키지 내에 클래스가 정의되어있는 개체의 보호 된 필드에 "직접 액세스"가 허용되는 이유는 무엇입니까?

  19. 19

    개체 내의 배열 내에서 중첩 된 개체에 액세스하는 데 문제가 있습니다.

  20. 20

    PHP API 호출을 크론 작업으로 전환하고 반환 된 값에 액세스

  21. 21

    힙의 객체에서 반환 된 c_str에 액세스하여 가비지 값을 얻는 이유는 무엇입니까?

  22. 22

    PHP에서 개체의 보호 된 속성 값을 얻는 방법

  23. 23

    컴포넌트의 액션 생성자로부터 반환 된 정보에 액세스하면 Flux가 중단됩니까?

  24. 24

    내 개체가 공통 기본 클래스에 정의 된 다른 개체의 보호 된 멤버에 액세스 할 수없는 이유는 무엇입니까?

  25. 25

    PowerShell ForEach 개체에서 반환 된 값에 액세스

  26. 26

    공장에서 반환 된 개체에 액세스

  27. 27

    중첩 된 개체의 키 또는 값에 액세스

  28. 28

    xsl : evaluate에 의해 반환 된 빈 시퀀스 처리

  29. 29

    암호로 보호 된 키가있는 PHP의 openssl_open에 해당하는 Java는 무엇입니까?

뜨겁다태그

보관