Специальные символы на именах объектов не позволяют мне перемещаться по объектам / массивам в 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
или написание метода получения.