PHP 7.4 release date is November 28, 2019. PHP 7.4 is a next basic release before PHP 8. PHP 7.4 comes with lots of new features. So it’s time for us to dive into some of the most exciting additions and new features that will make PHP faster and more reliable
- PHP 7.4 brings spread operator in array expression
- Arrow functions
- Null Coalescing assignment operator
- Weak References
- Typed properties in classes
- And more
Spread operator
Spread operator should have better performance than array_merge. That’s not only because the spread operator is a language structure while array_merge is a function, but also because of compile time optimization can be performance for constant arrays.
$name = ['ikhlaque', 'raheel'];
$test = ['A', 'B', ...$name, 'C'];
var_dump($test);
Output
array(5) {
[0]=>
string(6) "A"
[1]=>
string(6) "B"
[2]=>
string(5) "ikhalque"
[3]=>
string(4) "Raheel"
[4]=>
string(10) "C"
}
Arrow function
Arrow function also called a short closures allow for less verbose one-liner functions.
Previously we write as follwing
array_map(function (User $user) {
return $user->id;
}, $users)
You can now write
array_map(fn (User $user) => $user->id, $users)
Let’s summarise how short closures can be used.
- They are available as of PHP 7.4
- They start with the fn keyword
- They can only have one expression, which is the return statement
- No return keyword allowed
- Arguments and return types can be type hinted
- They can always access the parent scope, there’s no need for the use keyword.
$this is available just like normal closures.
Arrow functions may only contain one line, which is also the return statement.
Null Coalescing assignment operator
Null Coalescing assignment operator ( ?? ) a shorthand for null
$username = $_GET['username'] ?? ‘everybody';
Weak References
Weak references it allow programmer to give reference to an object that doesn’t prevent the object itself from being destroyed. Currently PHP supports Weak References by using an extention like pecl-weakref. Anyway, the new API is different from the documented WeakRef class.
$object = new stdClass;
$weakRef = WeakReference::create($object);
var_dump($weakRef->get());
unset($object);
var_dump($weakRef->get());
Typed properties in classes
Typed properties add in PHP 7.4 and provided a major improvements. Type Hint feature since available from PHP 5. Now we can use them with Object data type. All type supported except NULL and VOID. Following is the very basic example
--- Example 1 ---
class User {
public int $id;
public string $name;
}
--- Example 2 ---
class User {
public int $id;
public string $name;
}
$user = new User;
$user->id = 10;
$user->name = [];
In the code above, we declared a string property type, but we set an array as property value. In such scenario, we get the following Fatal error: