Jump to the navigation menu

Cleaner PHP code with promoted constructor properties

One of my favorite features that was introducted in PHP 8 was promoted constructor properties.

If I'm passing arguments into a constructor, I can declare a visibility and it will be promoted to a property on the class.

Here's an example of a value of a data transfer object that accepts a sort code and account number as strings:

class AccountDetails {

  public function __construct(
    public string $accountNumber,
    public string $sortCode,
  ) {}

}

Without promoted constructor properties, I'd need to create the properties and assign them manually, and I'd have this:

class AccountDetails {

  public string $accountNumber;

  public string $sortCode;

  public function __construct(
    string $accountNumber,
    string $sortCode,
  ) {
    $this->accountNumber = $accountNumber;
    $this->sortCode = $sortCode;
  }

}

Whilst text editors and IDEs can create the properties automatically, I prefer this as it's less code, more readable and easier to understand.

- Oliver

Was this interesting?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an certified Drupal Triple Expert with 18 years of experience, a Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.