Как получить доступ к этим свойствам

1

Я выполнил функцию и возвращает объект. Var_dump объекта можно увидеть по адресу:

view-source: http://quemfazsite.com.br/temp/boleto/teste.php

Я хочу получить доступ к id свойства внутри _attributes. Как мне это сделать?

Я пытался

$returned_value -> _attributes -> id

но он показывает NULL. Что я делаю не так?

object(Iugu_Invoice)#7 (2) {
["_attributes":protected]=>
array(51) {
["id"]=>
string(32) "B2EC65C567244A69BBFD4513CC5D460E"
["due_date"]=>
string(10) "02/09/2015"
["currency"]=>
string(3) "BRL"
["discount_cents"]=>
NULL
["email"]=>
string(15) "[email protected]"
["items_total_cents"]=>
int(1000)
["notification_url"]=>
NULL
["return_url"]=>
NULL
["status"]=>
string(7) "pending"
["tax_cents"]=>
NULL
["updated_at"]=>
string(25) "2015-08-28T11:32:09-03:00"
["total_cents"]=>
int(1000)
["total_paid_cents"]=>
int(0)
["paid_at"]=>
NULL
["taxes_paid_cents"]=>
NULL
["paid_cents"]=>
NULL
["cc_emails"]=>
NULL
["financial_return_date"]=>
NULL
["payable_with"]=>
string(9) "bank_slip"
["overpaid_cents"]=>
NULL
["secure_id"]=>
string(41) "b2ec65c5-6724-4a69-bbfd-4513cc5d460e-f4a3"
["secure_url"]=>
string(67) "https://iugu.com/invoices/b2ec65c5-6724-4a69-bbfd-4513cc5d460e-f4a3"
["customer_id"]=>
NULL
["customer_ref"]=>
NULL
["customer_name"]=>
NULL
["user_id"]=>
NULL
["total"]=>
string(8) "R$ 10,00"
["taxes_paid"]=>
string(7) "R$ 0,00"
["total_paid"]=>
string(7) "R$ 0,00"
["total_overpaid"]=>
string(7) "R$ 0,00"
["fines_on_occurrence_day"]=>
NULL
["total_on_occurrence_day"]=>
NULL
["fines_on_occurrence_day_cents"]=>
NULL
["total_on_occurrence_day_cents"]=>
NULL
["advance_fee"]=>
NULL
["paid"]=>
string(7) "R$ 0,00"
["interest"]=>
NULL
["discount"]=>
NULL
["created_at"]=>
string(14) "28/08, 11:32 h"
["refundable"]=>
NULL
["installments"]=>
NULL
["transaction_number"]=>
int(1111)
["payment_method"]=>
NULL
["created_at_iso"]=>
string(25) "2015-08-28T11:32:09-03:00"
["updated_at_iso"]=>
string(25) "2015-08-28T11:32:09-03:00"
["financial_return_dates"]=>
NULL
["bank_slip"]=>
object(stdClass)#3 (3) {
["digitable_line"]=>
string(47) "00000000000000000000000000000000000000000000000"
["barcode_data"]=>
string(44) "00000000000000000000000000000000000000000000"
["barcode"]=>
string(75) "https://iugu.com/invoices/barcode/b2ec65c5-6724-4a69-bbfd-4513cc5d460e-f4a3"
}
["items"]=>
array(1) {
[0]=>
array(3) {
["description"]=>
string(32) "Serviço Digital CÓD. 873923675"
["quantity"]=>
string(1) "1"
["price_cents"]=>
string(4) "1000"
}
}
["variables"]=>
array(1) {
[0]=>
object(stdClass)#5 (3) {
["id"]=>
string(32) "B16E017E3D124AA38C2B8F97E2723C5B"
["variable"]=>
string(31) "payment_data.transaction_number"
["value"]=>
string(4) "1111"
}
}
["custom_variables"]=>
array(0) {
}
["logs"]=>
array(1) {
[0]=>
object(stdClass)#6 (4) {
["id"]=>
string(32) "4FC3CF74C5184DBE9C3F7B2DC421E308"
["description"]=>
string(26) "Email de Lembrete enviado!"
["notes"]=>
string(50) "Lembrete enviado com sucesso para: [email protected]"
["created_at"]=>
string(14) "28/08, 11:32 h"
}
}
}
["_unsavedAttributes":protected]=>
array(4) {
["due_date"]=>
int(1)
["email"]=>
int(1)
["payable_with"]=>
int(1)
["items"]=>
int(1)
}
}
  • 1
    Постарайтесь свести к минимуму объем кода, который все еще идентифицирует вашу проблему. Пожалуйста, посмотрите здесь: stackoverflow.com/help/mcve
Теги:

3 ответа

2

Прежде всего переменная _attributes защищена, вам понадобится метод getter. Поскольку вы не можете получить доступ к классу Iugu_Invoice, чтобы добавить его, вы можете расширить класс:

use Namespace\To\Iugu_Invoice;
class MyIugu_Invoice extends Iugu_Invoice{
    public function getAttributes(){
       return $this->_attributes
    }
}

Пожалуйста, имейте в виду использование реального пространства имен в приведенном выше коде. Если вы не используете пространства имен, просто забудьте этот бит. Затем вам нужно использовать MyIugu_Invoice вместо Iugu_Invoice. Кроме того, _attributes - это массив, а не объект, поэтому вам нужно будет:

$attributes = $returned_value->getAttributes();
$id = $attributes['id'];
  • 1
    Ну, в вставленном описании написано ["_attributes":protected]=>array(51) что означает, что _attributes является защищенным массивом из 51 элемента.
  • 0
    Я получил ошибку Вызов неопределенного метода Iugu_Invoice :: getAttributes ()
Показать ещё 5 комментариев
0

попробуй это:

echo $returned_value["id"];

или это:

$attr = (object) array_shift($returned_value);
echo $attr->id;
  • 0
    Если у вас есть проблема, чтобы получить объект (приватный или защищенный) в атрибуты $attr = (object) array_shift($returned_value); -> _, попробуйте это: $attr = (object) array_shift($returned_value); echo $attr->id;
0

Похоже, что идентификатор находится в массиве, а не в свойстве класса. Попробуй это:

$returned_value->_attributes["id"]

И, как уже упоминалось, вы не можете получить доступ к этому массиву, потому что он защищен, если вы не можете добавить getter в класс (как вы упомянули), вы должны наследовать от этого класса и добавить getter.

  • 0
    это не сработало. Как кто-то создает электронную библиотеку, которую я могу использовать, но не могу получить доступ к свойствам? Почему print_r работает нормально и может получить доступ к содержимому без каких-либо методов получения и установки?
  • 0
    Да, как сказали все парни, тебе нужен добытчик. Если вы не можете изменить этот класс, попробуйте унаследовать его!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню