From 6f3caa3ef3c40c2d3e45e59261b9ba2927d0bbbc Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Thu, 13 Apr 2023 10:11:54 +0100 Subject: [PATCH] daily-email: add 2023-04-12 --- src/content/daily-email/2023-04-12.md | 48 +++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/content/daily-email/2023-04-12.md diff --git a/src/content/daily-email/2023-04-12.md b/src/content/daily-email/2023-04-12.md new file mode 100644 index 000000000..854625c4a --- /dev/null +++ b/src/content/daily-email/2023-04-12.md @@ -0,0 +1,48 @@ +--- +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: + +```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: + +```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.