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+.
