Constructor property promotion - OOP in PHP
Indice
Il constructor property promotion è una funzionalità introdotta in PHP 8.0 che semplifica la definizione di classi con molte proprietà. Consente di definire le proprietà e il costruttore di una classe in modo più conciso e leggibile, senza dover ripetere le stesse proprietà in entrambi i posti.
Come abbiamo visto con il metodo magico __construct, dovevamo specificare più volte le proprietà da passare, creando del codice ridondante. Con la sintassi del costructor property promotion invece, ci basterà scriverlo una sola volta.
Sintassi di constructor property promotion
class MyClass {
public function __construct(
public $property1,
private $property2,
protected $property3
) {
// ...
}
}
Esempio utilizzando il metodo construct property promotion
/lib/automobile.php
<?php
class Automobile
{
function __construct(
public string $marca,
public string $modello,
public string $tipologia,
public int|float $prezzo = 0
){
}
public function riepilogo(){
return "Marca: $this->marca <br>
Modello: $this->modello <br>
Tipologia: $this->tipologia <br>
Prezzo: $this->prezzo <br><br>";
}
}
?>
/index.php
<?php
require __DIR__ . '/lib/automobile.php';
//crezione nuove istanze
$citroenC4 = new Automobile("Citroen","C4 Cactus","CrossOver",25000);
$panda4x4 = new Automobile("Fiat","Panda 4x4","Fuoristrada",15000);
$audiR8 = new Automobile("Audi","R8","Coupè",105000);
//invocazione metodo riepilogo()
echo $citroenC4->riepilogo();
echo $panda4x4->riepilogo();
echo $audiR8->riepilogo();
?>