Как я могу создать переменную, только если свойство объекта существует?

#php #oop #object #variables

#php #ооп #объект #переменные

Вопрос:

Я создаю переменную «template» из объекта:

 $templateId = $page->getTemplate()->getId();
 

Но в некоторых случаях «template» не существует в «$page». В этом случае я хочу, чтобы «$templateId» был пустым.

Мой подход:

 $templateId = property_exists($page->getTemplate()->getId()) ? $page->getTemplate()->getId() : "";
 

Ошибка:

Вызов функции-члена getId() при null

Комментарии:

1. укажите свой property_exists() здесь

Ответ №1:

getId() не является свойством. Это метод. Вы можете проверить существование метода с method_exists() помощью функции

 $templateId = method_exists($page->getTemplate(), 'getId') ? $page->getTemplate()->getId() : ""
 

Ответ №2:

 $templateId = $page->getTemplate() ? $page->getTemplate()->getId() : "";
 

Ответ №3:

Просто добавьте ‘@’

 $templateId = @$page->getTemplate()->getId() ? $page->getTemplate()->getId() : "";
 

Ответ №4:

Используйте if(obj.propertyname){} .

Таким образом, вы можете убедиться, что свойство должно существовать.