2013-10-01 4 views
1
object(Term)#32 (10) { 
    ["term_id":protected]=> int(11589) 
    ["session_id":protected]=> string(5) "11275" 
    ["site_id":protected]=> int(9999999) 
    ["data":protected]=> array(62) { 
    ["term_id"]=> string(5) "11589" 
    ["term_name"]=> string(9) "Full Year" 
    ["start_date"]=> string(10) "2013-09-02" 
    ["end_date"]=> string(10) "2014-06-14" 
    } 
} 

Я получаю эти данные из var_dump и хочу получить доступ к «start_date». Как это сделать?Доступ к данным из var_dump()

скажем

var_dump($term); 

я сделал:

var_dump($term["start_date"]); and I get a NULL. 
+0

Попробуйте следующее: '$ term-> data ['start_date'];' –

ответ

3

Вы не должны делать это. var_dump - это функция отладки, поэтому ее вывод аналогичен внутреннему представлению переменной (не точной причине) - и он не должен использоваться ни в каких других случаях, а не для отладки.

Поскольку данные объектов, которые вы хотите, чтобы получить это protected, вы должны использовать соответствующий метод, чтобы получить/изменить что (см вашего определения Term класса)

+0

Вы говорите о методах getters и seters? http://stackoverflow.com/questions/1568091/why-use-getters-and-setters?rq=1 – pablofiumara

+0

Нет. Не совсем. Класс OP может иметь свои собственные методы работы с данными - и я не могу предсказать эту структуру класса «Term» –

0

Вы не можете получить доступ к свойству start_date таким образом. Ваш синтаксис будет работать, если $term был массивом, но не с объектом.

Объект нуждается в поглотителе для защищаемого имущества start_date

0

Вашего объекта $term не имеет индекса start_date, это не является массив. Кроме того, свойство data защищено, поэтому его можно получить только изнутри объекта.

Если удалить protected флаг из объекта будет доступна, как это:

var_dump($term->data["start_date"]); 

Это обращается к индексу start_date в массиве data внутри $term объекта.

Альтернативой было бы добавить функцию геттера для значения в класс Term.

+0

Повреждает ошибку, так как свойство защищено –

+0

@AlmaDoMundo вы правы, добавив это к ответу. –

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