PHP: есть ли способ проверить, является ли объект нулевым, а если нет, вызвать один из его методов в одну строку? - PullRequest
0 голосов
/ 22 апреля 2019

Я делаю приложение (клиент на Swift и сервер на PHP). Я хотел бы знать, есть ли в PHP способ сделать так же, как в Swift STH, как:

myInstanceOrNil?.mymethod()

, который вызывает мой метод, если myInstanceOrNil не равно nil, или возвращает nil, если myInstanceOrNil равен nil.

На моем php-сервере я должен вернуть несколько необязательных данных (например, может быть, у пользователя есть учетная запись на Facebook, а может и нет),

$member = new Member($id);   

echo json_encode([ 
    "id" => $member->getId(), 
    "fbId" => $member->getFbInformationsInstanceOrNull()->getFbId()
])

Проблема здесь, если getFbInformationsInstanceOrNull() возвращает ноль, поскольку у пользователя нет связанной учетной записи fb, это приведет к ошибке, поскольку null->getFbId() не существует. В Swift мне просто нужно сделать:

$member.getFbInformationsInstanceOrNull?().getFbId()

Как это легко сделать в PHP?

1 Ответ

1 голос
/ 22 апреля 2019

Вам нужно empty для этого

$fbId = $member->getFbInformationsInstanceOrNull();
if(!empty($fbId)){
echo json_encode([ 
    "id" => $member->getId(), 
    "fbId" =>  $fbId->getFbId()]);
}

если идентификатор не связан, код не будет выполнен, вам может потребоваться показать какое-то сообщение пользователю или соответствующим образом обновить бизнес.

Если вы также хотите передать null, вы можете сделать это следующим образом:

$fbId = $member->getFbInformationsInstanceOrNull();
echo json_encode([ 
        "id" => $member->getId(), 
        "fbId" =>  empty($fbId)?null:$fbId->getId() ]);
}

Следующие значения считаются пустыми:

  • "" (пустая строка)
  • 0 (0 как целое число)
  • 0,0 (0 в виде числа с плавающей запятой)
  • "0" (0 в виде строки)
  • NULL
  • FALSE
  • array () (пустой массив)

Подробнее о empty здесь

...