PHP: есть ли противоположность оператора объединения нулей? - PullRequest
0 голосов
/ 18 января 2019

Я часто нахожусь в ситуации, когда переменная может быть object или null.

Когда я помещаю данные в базу данных, я должен придерживаться следующего:

// @var User|null $user
$data['id_user'] = $user!==null ? $user->getId() : null;

Есть ли способ сократить это? Я знаю о ??, но это несколько противоположно.

Я использую PHP 7.1.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Если вы определили класс __toString() в своем пользовательском объекте и получили этот идентификатор, тогда вы можете использовать пустой оператор объединения:

class User
{
    public function __toString()
    {
        return (string) $this->getId();
    }
}

$data['id_user'] = $user ?? null;

Это также не будет генерировать никаких предупреждений.

Однако, это не очень помогает, если у вас есть более одного поля, с которым вы хотите это сделать.

0 голосов
/ 18 января 2019

Я не думаю, что есть оператор, который делает именно это.

Наиболее близким является оператор подавления ошибок @:

$data['id_user'] = @$user->getId();

Если $user->getId() получает ошибку, сообщение об ошибке подавляется, и значение равно null.

...