Costruttori e visibilità
Il costruttore
Sezione intitolata “Il costruttore”Il costruttore è un metodo speciale chiamato automaticamente quando crei un oggetto.
<?phpclass Prodotto { public string $nome; public float $prezzo;
public function __construct(string $nome, float $prezzo) { $this->nome = $nome; $this->prezzo = $prezzo; }}
$prodotto = new Prodotto("Quaderno", 3.50);__construct inizializza l’oggetto con i dati iniziali.
Visibilità
Sezione intitolata “Visibilità”La visibilità stabilisce da dove puoi usare proprietà e metodi.
public: accessibile anche dall’esternoprivate: accessibile solo dentro la classeprotected: accessibile dentro la classe e nelle classi figlie
Private
Sezione intitolata “Private”<?phpclass Conto { private float $saldo = 0;
public function deposita(float $importo): void { if ($importo > 0) { $this->saldo += $importo; } }
public function leggiSaldo(): float { return $this->saldo; }}$saldo è privato: dall’esterno non puoi modificarlo direttamente, ma devi passare dai metodi.
Incapsulamento
Sezione intitolata “Incapsulamento”L’incapsulamento protegge i dati interni di un oggetto e offre metodi chiari per usarli.
Così puoi evitare valori impossibili, come un deposito negativo.
Getter e setter
Sezione intitolata “Getter e setter”Un getter legge un valore. Un setter lo modifica dopo aver controllato che sia valido.
public function leggiSaldo(): float { return $this->saldo;}Non servono sempre, ma sono utili quando vuoi controllare l’accesso ai dati.
Promozione delle proprietà nel costruttore
Sezione intitolata “Promozione delle proprietà nel costruttore”Nelle versioni moderne di PHP puoi scrivere costruttori più compatti.
<?phpclass Prodotto { public function __construct( public string $nome, private float $prezzo ) { }}Questa sintassi crea le proprietà e assegna loro un valore nello stesso punto. È comoda, ma all’inizio va letta con calma: public string $nome dentro il costruttore diventa una proprietà pubblica della classe.
Setter con controllo
Sezione intitolata “Setter con controllo”Un setter serve quando vuoi permettere una modifica, ma solo se il valore è valido.
<?phpclass Prodotto { private float $prezzo;
public function cambiaPrezzo(float $prezzo): void { if ($prezzo <= 0) { return; }
$this->prezzo = $prezzo; }}Qui impedisci prezzi uguali o inferiori a zero.
Regola pratica
Sezione intitolata “Regola pratica”Usa private per i dati che non devono essere modificati liberamente. Offri metodi pubblici quando vuoi controllare come quei dati vengono letti o cambiati.