Salta ai contenuti
Manuale LogoManuale Logo

Costruttori e visibilità

Il costruttore è un metodo speciale chiamato automaticamente quando crei un oggetto.

<?php
class 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.

La visibilità stabilisce da dove puoi usare proprietà e metodi.

  • public: accessibile anche dall’esterno
  • private: accessibile solo dentro la classe
  • protected: accessibile dentro la classe e nelle classi figlie
<?php
class 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.

L’incapsulamento protegge i dati interni di un oggetto e offre metodi chiari per usarli.

Così puoi evitare valori impossibili, come un deposito negativo.

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.

Nelle versioni moderne di PHP puoi scrivere costruttori più compatti.

<?php
class 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.

Un setter serve quando vuoi permettere una modifica, ma solo se il valore è valido.

<?php
class 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.

Usa private per i dati che non devono essere modificati liberamente. Offri metodi pubblici quando vuoi controllare come quei dati vengono letti o cambiati.