PHP 5: un nuovo Object Model
Con PHP 5 è stato introdotto un nuovo modello a oggetti, molto più potente e strutturato rispetto a PHP 4.
Tuttavia, la sintassi per dichiarare una classe è rimasta molto simile:
class NomeClasse { // Proprietà e metodi della classe }
In PHP 4, il costruttore doveva avere lo stesso nome della classe:
class Motore { function Motore() { echo "Costruttore PHP 4"; } }
In PHP 5 (e successivi), è stato introdotto il costruttore standard __construct():
class Motore { function __construct() { echo "Costruttore PHP 5+"; } }
Esempio pratico Come puoi vedere:
<?php class Engine { public $name; // Costruttore stile PHP 4 function Engine() { $this->name = "Engine"; } } class Engine2 extends Engine { // Costruttore moderno function __construct() { $this->name = "Engine 2"; } } $engine = new Engine(); echo $engine->name; // Output: Engine $engine2 = new Engine2(); echo $engine2->name; // Output: Engine 2 ?>
La prima classe utilizza il costruttore vecchio stile.
La seconda, moderna, sovrascrive con __construct().
Nota su PHP 7.x e 8.x
A partire da PHP 7 e 8, è fortemente raccomandato (e in alcuni casi necessario) utilizzare solo __construct().
I costruttori con il nome della classe sono deprecati in PHP 7.0 e rimossi completamente in PHP 8.0.
In conclusione
Usa sempre __construct() per mantenere il tuo codice compatibile con le versioni moderne di PHP.
Evita lo stile function NomeClasse() che non è più supportato in PHP 8+.