Специальные символы на именах объектов не позволяют мне перемещаться по объектам / массивам в php

Прямо сейчас я использую drupal для создания сайта. Я изменяю пользовательский модуль drupals, потому что мне нужно сделать собственный макет страницы профиля.

К сожалению, у меня возникли проблемы с доступом через массив.

все данные профиля находятся в массиве ($user_profile)

Массив просто огромен. Я пытаюсь перемещаться по объектам.

Хотя я хорошо выполняю навигацию (благодаря функции print_r), я столкнулся с проблемой прямо сейчас.

есть объект под названием entityInfo:protected. Внутри этого объекта есть больше объектов (например, я пытаюсь получить доступ к объекту, который находится внутри этого объекта, называется метка).

проблема, если я пытаюсь сделать это:

echo $user_profile['profile_medico']['view']['profile2']['2']['field_tags']['#object']->{'entityInfo:protected'}->label 

Я получаю следующее сообщение

Примечание: неопределенное свойство: Profile::$entityInfo: защищено в include() (строка 55 из D:\xampp\htdocs\specialdr\modules\user\user-profile.tpl.php). Примечание: Попытка получить свойство необъекта в include() (строка 55 из D:\xampp\htdocs\specialdr\modules\user\user-profile.tpl.php).

Я не знаю, как я могу написать это правильно, чтобы я мог получить доступ к этому объекту и продолжать проходить через массивы и объекты... потому что у меня все еще есть длинный путь, пока я не доберусь до объектов, к которым мне нужен доступ.

Кстати... если вы хотите увидеть массив... http://fancomix.net/bigarray.txt

Заранее спасибо.

1 ответ

Решение

Это просто ->entityInfo, :protected не требуется, это модификатор доступа или модификатор видимости. Отображается только в var_dump() предоставить информацию о недвижимости. Свойство объекта (и метода тоже) может быть объявлено как публичное, защищенное или приватное в PHP. Вы можете прочитать больше о видимости в руководстве.

protected означает, что к свойству можно получить доступ только из метода объекта - нет внешнего доступа, поэтому вы не сможете получить свойство. Profile класс может иметь метод получения - вы должны проверить определение этого класса, чтобы найти его, или внести необходимые изменения, если можете, например, изменить его на public или написание метода получения.

Другие вопросы по тегам