
Update Your Blade Templates to Use the Null Coalesce Operator
In the next major release, Laravel 5.7 removes the Blade “or” Operator. Andrew Brown submitted a PR for Laravel 5.7 to Remove Blade Defaults from the framework, due to the new Null Coalesce operator available in PHP 7.
Although Laravel 5.7 is months away from release, it’s probably a good idea to preemptively replace “or” operator usage with PHP 7’s null coalesce operator.
PHP 7’s Null Coalesce Operator
The new null coalesce operator introduced in PHP 7 is an excellent addition to the PHP language that is extremely useful in your templates. It’s syntactic sugar for a frequent need of using the ternary operator with isset()
From the PHP manual, here’s a couple of examples of how it works:
<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
You can even chain them, which is a bonus over the humble “or” operator that ships with Blade up to Laravel 5.6.
Here are a couple of more examples of how it works that might interest you using the excellent PsySH REPL:
$ psysh
>>> true ?? 'Is it true?'
=> true
>>> false ?? 'Is it false?'
=> false
>>> $person->getName() ?? 'Guest'
PHP Notice: Undefined variable: person on line 1
>>> $person->name ?? 'Guest'
=> "Guest"
The Background of the Blade “or” Operator
Before the null coalescing operator, Blade handled the same problem with the “or” operator, which allows a default value when the first value isn’t set, separated by an “or”:
{{ $name or 'Guest' }}
Which is shorthand for:
isset($name) ? $name : 'Guest'
Laravel increased the PHP requirement to PHP 7 in Laravel 5.5, so in the previous version you could use the ??
operator if using PHP 7, but the framework needed to support PHP 5.
Update Now
Since Laravel 5.5 requires PHP 7, you can update your usage of the “or” operator to the null coalesce operator ahead of the Laravel 5.7 release later this year.
Filed in: Laravel TutorialsNewsletter

Join 31,000+ others and never miss out on new tips, tutorials, and more.
Laravel Jobs

- Software Developer
-
Remote (US & Canada)
Alley - 😎 Laravel Developer
-
Remote
Jogg, Inc - Junior, Mid, and Senior Software Engineers. Laravel / Vue. Saint Petersburg, FL
-
Saint Petersburg, FL and Remote
ShineOn - Senior PHP Developer (Laravel)
-
Remote
The Interaction Design Foundation - Fullstack Laravel Engineer (Munich/Remote) 💻
-
Munich, Germany or Remote
AirLST GmbH
The Vue Cookbook
The Vue.js teams announced and published an official Cookbook to go along with the Guide. There are some differences…
The Git client Tower Launches it’s First V3 Public Beta
Tower launched it’s first free public beta for the all-new V3 and it’s free to try for both macOS and Windows.