Я пишу плагин доставки для WooCommerce, и когда я пытаюсь получить значения защищенного ключа ([key: protected]), он возвращается пустым. Как мы можем получить значение защищенного ключа из массива или объекта?
В частности, в функции calc_shipping woocommerce_shipping_init он передается в $ 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
)
)
)
)
)
Так что проблема в том, что когда я пытаюсь получить [имя] или [слаг], я получаю пустое значение для [данные : protected] объект (и, следовательно, [name] и [slug] не существуют). Например:
$data = $package['contents']['abc123']['data']->data; // $data returns empty
Итак, как мы можем получить значение защищенного ключа из массива или объекта?