--- title: > Cleaner PHP code with promoted constructor properties pubDate: 2023-04-12 permalink: >- archive/2023/04/12/cleaner-php-code-with-promoted-constructor-properties tags: - php --- 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: ```language-php 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: ```language-php 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.