Что является более кратким способом переписать это выражение.Как я могу переписать это выражение более лаконично?
$user = $user ? $user : Yii::$app->getUser()->identity;
Что является более кратким способом переписать это выражение.Как я могу переписать это выражение более лаконично?
$user = $user ? $user : Yii::$app->getUser()->identity;
В PHP> = 7 вы можете использовать Null coalescing operator:
$user = $user ?? Yii::$app->getUser()->identity;
Если вы просто хотите, чтобы сделать его немного короче, вы можете использовать или запросе.
$user || $user = Yii::$app->getUser()->identity;
Если вы используете PHP 7, использование оператора нулевой коалесценции, как указывает указатель AbraCadaver, имеет смысл. Это и есть главная причина, по которой она существует.
Но в целом я бы рекомендовал не пытаться сделать слишком много «оптимизации» с точки зрения сокращения вашего кода. Ясность и удобочитаемость гораздо важнее, чем сжатость.
За исключением' Примечание: Неопределенная переменная: user' – AbraCadaver
Я предположил, что '$ user' был определен, но может просто оцениваться как false, учитывая код OP с троянец получит такое же уведомление, если это не так. –
Но я думаю, все знают, что может случиться, когда мы «предположим». ;) –
$user = $user ?: Yii::$app->user->identity;
За исключением уведомления: 'Неопределенная переменная: пользователь'. Большинство людей используют троицу таким образом, чтобы проверить, установлено ли это, если вы не получите это уведомление. – AbraCadaver
Насколько вы можете получить более сжатые? –
Правда. Я просто предположил, что может быть лучший способ выразить это. –
В PHP7 - '$ user = $ user ?? Yii :: $ app-> getUser() -> identity; ' – AbraCadaver