A lowdown of PHP 8.0 update

Image for post
Image for post

PHP 8 Named arguments

// PHP 7htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, ‘UTF-8’, false);// PHP 8// Specify only required parameters, skipping optional ones.// Arguments are order-independent and self-documented.htmlspecialchars($string, double_encode: false);

PHP 8 Attributes

Instead of PHPDoc annotations, you can now use structured metadata with PHP’s native syntax.

// PHP 7class PostsController{/*** @Route(“/api/posts/{id}”, methods={“GET”})*/public function get($id) { /* … */ }}// PHP 8class PostsController{#[Route(“/api/posts/{id}”, methods: [“GET”])]public function get($id) { /* … */ }}

PHP 8 Constructor property promotion

Less boilerplate code to define and initialize properties.

// PHP 7class Point {public float $x;public float $y;public float $z;public function __construct(float $x = 0.0,float $y = 0.0,float $z = 0.0,) {$this->x = $x;$this->y = $y;$this->z = $z;}}// PHP 8class Point {public function __construct(public float $x = 0.0,public float $y = 0.0,public float $z = 0.0,) {}}

PHP 8 Union types

Instead of PHPDoc annotations for a combination of types, you can use native union type declarations that are validated at runtime.

// PHP 7class Number {/** @var int|float */private $number;/*** @param float|int $number*/public function __construct($number) {$this->number = $number;}}new Number(‘NaN’); // Ok// PHP 8class Number {public function __construct(private int|float $number) {}}new Number(‘NaN’); // TypeError

PHP 8 Nullsafe operator

In the latest version you can use a chain of calls with the new nullsafe operator instead if null check conditions. In case of chain failure, the execution of the entire chain aborts, and the entire chain evaluates to null.

// PHP 7$country = null;if ($session !== null) {$user = $session->user;if ($user !== null) {$address = $user->getAddress();if ($address !== null) {$country = $address->country;}}}// PHP 8$country = $session?->user?->getAddress()?->country;

PHP 8 Match expression

The new match is similar to switch and has the following features:

// PHP 7switch (8.0) {case ‘8.0’:$result = “Oh no!”;break;case 8.0:$result = “This is what I expected”;break;}echo $result;//> Oh no!// PHP 8echo match (8.0) {‘8.0’ => “Oh no!”,8.0 => “This is what I expected”,};//> This is what I expected

Written by

Technology Insights, Design Trends and Industry Updates. https://www.galaxyweblinks.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store