Constructor Property Promotion is a simple shorthand syntax to declare and assign class properties from the constructor. It basically tells the way data has to be treated in code. Constructor Property Promotion is a new syntax provided in the newer version of PHP 8 that allows class property declaration and constructor assignment, variable assignment right from the constructor without getting in the condition of boilerplate code. This avoids having to type the class property name and property type from many to just once. It also avoids using repeated types. Promoted properties can only be used in constructors. Properties will be assigned before the rest of the constructor code is executed.
Note: Not all constructor properties should be promoted, you can mix and match with promoted and normal properties, and it’s absolutely ok to combine them. Promoted properties mostly improve code quality. The below example illustrates the basic syntax for the Constructor Property in PHP 8:
class Video { public $description; public function __construct( public int $videoid, string $description ) { $this->description = $description; } }
Example 1: This example describes the basic usage of the Constructor Property Promotion in PHP 8.
PHP
<?php class GFG { public $name ; public $university ; // Boilerplate code function __construct( $name , $university ) { $this ->name = $name ; $this ->university = $university ; } function get_name() { return $this ->name; } function get_university() { return $this ->university; } } $a = new GFG( "Atul Sisodiya" , "JECRC" ); echo $a ->get_name(); echo "<br>" ; echo $a ->get_university(); ?> |
Output:
Atul Sisodiya JECRC
Example 2: After the latest update in PHP version 8, it provides Constructor Property Promotion of simpler syntax.
PHP
<?php class GFG { public function __construct( public string $name , public string $university ) { $this ->name = $name ; $this ->university = $university ; } function get_name() { return $this ->name; } function get_university() { return $this ->university; } } $a = new GFG( "Atul Sisodiya" , "JECRC" ); echo $a ->get_name(); echo "<br>" ; echo $a ->get_university(); ?> |
Output:
Atul Sisodiya JECRC
Example 3: This is another example of a constructor class in PHP.
PHP
<?php class Employee { public $name ; public $position ; function __construct( $name , $position ) { // This is initializing the class properties $this ->name = $name ; $this ->position = $position ; } function show_details() { echo $this ->name . " : " ; echo "Your position is " . $this ->position . "<br>" ; } } $employee_obj = new Employee( "Rakesh" , "developer" ); $employee_obj ->show_details(); ?> |
Output:
Rakesh : Your position is developer
Example 4: The above code is using the constructor property promotion.
PHP
<?php class Employee { public function __construct(string $name , string $position ) { $this ->name = $name ; $this ->position = $position ; } function show_details() { echo $this ->name . " : " ; echo "Your position is " . $this ->position . "<br>" ; } } $employee_obj = new Employee( "Rakesh" , "developer" ); $employee_obj ->show_details(); ?> |
Output:
Rakesh : Your position is developer
Demerits of Constructor Property Promotion:
- Abstract classes can have constructor properties promoted, but they cannot have it if the constructor is marked abstract. It is not usable in all situations
- var is not allowed with the promoted property.
- A callable type is not allowed and a nullable type cannot be implicit with a promoted property.