2015-08-28 4 views
1

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

вид-источник: 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

Постарайтесь свести к минимуму количество код, который все еще идентифицирует вашу проблему. Пожалуйста, смотрите здесь: http://stackoverflow.com/help/mcve – icecub

ответ

0

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

$returned_value->_attributes["id"] 

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

+0

Это не сработало. Как кто-то создает электронную библиотеку, которую я могу использовать, но не могу получить доступ к свойствам? Почему print_r работает нормально и может получить доступ к содержимому без каких-либо настроек getter и setter? – amandanovaes

+0

Да, как сказали все парни, вам понадобится геттер. Если вы не можете изменить этот класс, попробуйте наследовать его! –

2

Прежде всего переменной _attributes является защищаемых, вам нужен метод получения. Как вы не можете получить доступ к классу 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() – amandanovaes

+0

@amandanovaes Вы создали метод getAttributes, как я его указал? Его нужно создать так же, как в описании класса Iugu_Invoice –

0

попробовать это:

echo $returned_value["id"]; 

или это:

$attr = (object) array_shift($returned_value); 
echo $attr->id; 
+0

Я не понимаю ... –

+0

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

Смежные вопросы