Open In App

Constructor Property Promotion in PHP 8

Last Updated : 05 Jun, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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.


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads