Aviso: a diretiva @or foi retirada da versão 5.7 do Laravel. Ao invés de usar o @or, é possível usar o operador ??  (Null Coalesce), que foi introduzido no PHP 7.

Eu costumava usar a função isset para verificar se uma collection – ou qualquer outro tipo de variável – tinha sido instanciada. Por exemplo:

{{ ( isset( $nome ) ) ? $nome : 'Nome não informado' }}

Este código é mais curto do que escrever um bloco padrão de if/else:

@if(isset($nome))
    {{$nome}}
@else
    Nome não informado
@endif

Você sabia que pode deixar esse código ainda mais limpo? Basta usar o comando or do blade  o operador ?? (Null Coalesce):

// Não funciona mais 
{{$name or 'Nome não definido'}}

// Use este código
{{$name ?? 'Nome não definido'}}

Resumo desta dica em vídeo

A diretiva @OR funciona para objetos?
O operador “??” funciona para objetos?

Sim. Esta dúvida foi levantada em um fórum de Laravel e achei interessante compartilhar aqui também.

Como o Null Coalesce é um operador nativo do PHP 7, funciona perfeitamente para objetos e seus atributos.

Rota:


Route::get('/teste', function () {
    $obj = new stdClass();
    $obj->a = 'Letra a';
    $obj->b = null;
    return view('teste',['obj' => $obj]);
});

View:

A: {{$obj->a ?? 'A não definido'}}
<br>
B: {{$obj->b ?? 'B não definido'}} 

Encadear o operador Null Coalesce

Você pode fazer múltiplas verificações na mesma linha:

/**
* Neste exemplo, o form post name é exibido. 
* Se ele não existir, * verificamos o form post email. Se nenhum
* deles estiver definido, exibimos uma mensagem
*/
echo $_POST['name'] ?? $_POST['email'] ?? 'Nome e e-Mail não definidos';
5/5 - (8 votes)