2016-12-12 4 views
0

Скажем, у меня есть объект, как это:Как проверить наличие нескольких уровней параметров объекта в PHP?

$user = (object) [ 
    'username' => 'foo', 
    'post' => (object) [ 
     'title' => 'bar' 
    ], 

]; 

Теперь я хочу, чтобы получить значение Заголовок сообщения этого пользователя, но я хочу, чтобы убедиться, что оба user, posts и title не нулевым или неопределенным. Сейчас я проверяю это следующим образом:

if(isset($user) && $user->post && $user->post->title) 

Есть ли более элегантный способ?

Я не был уверен, насколько хорошо это описал в названии. Пожалуйста, исправьте, если вы знаете лучшую формулировку.

+0

Вы используете каркас? –

ответ

0

isset() принимает несколько параметров, и будет возвращать false, если все не установлены (и не null), так что вы можете сделать это:

isset($user, $user->post, $user->post->title) 
1

Проверка всего избыточна. Все, что вам нужно проверить, это свойство самого низкого уровня, которое является $title:

if (isset($user->post->title)) { 
    // do something 
} 
Смежные вопросы