Il metodo costruttore in PHP
Dopo aver introdotto le classi in PHP, oggi ci occupiamo del metodo costruttore.
E' un "metodo magico" cioè viene automaticamente richiamato non appena istanziamo la classe che lo contiene
Questo metodo ha come nome __construct
Vediamolo subito in azione in questo script in cui abbiamo la classe "MioTest". Istanziata la classe, il metodo costruttore risponderà con un "ciao".
<?php
class MioTest
{
// metodo costruttore
public function __construct(){
echo "ciao";
}
}
// creo un oggetto di classe "MioTest"
$obj= new MioTest;
?>
Istanzio un oggetto di classe "MioTest" e non faccio altro. Se provate a lanciare lo script vedrete come output "ciao". Questo significa che il metodo costruttore è stato chiamato automaticamente, senza doverlo chiamare manualmente.
Un metodo costruttore è utile per eseguire delle operazioni preliminari all'interno della classe, ma anche, e sopratutto, per poter consentire alla classe di ricevere parametri, come normalmente facciamo nelle funzioni.
Ad esempio, se voglio che la classe riceva i parametri "cognome" e "nome", e procedo come in questo script, che analizziamo subito.
<?php
class MioTest
{
// metodo costruttore
public function __construct($x,$y){
echo "ciao da ".$x." ".$y;
}
}
// creo un oggetto di classe "MioTest"
$obj= new MioTest("Rossi","Paolo");
?>
Nel metodo costruttore, riceverò i due parametri dall'esterno della classe, cioè quando vado a creare un oggetto della classe "MioTest", e li chiamo x e y.
Per utilizzare i due parametri sarà sufficente effettuare un "echo" di $x e $y. Ecco il risultato:
ciao da Rossi Paolo
Ne approfitto per dirti che, se non fosse ancora chiaro, puoi istanziare quanti oggetti vuoi di una classe, ed ognuno avrà la sua vita indipendente dagli altri oggetti.
Potrei quindi tranquillamente istanziare tre oggetti
$obj= new MioTest("Rossi","Paolo");
$obj= new MioTest("Bianchi","Mario");
$obj= new MioTest("Verdi","Lucia");
Bene, adesso torniamo all'esempio precedente e facciamoci del male, rendiamo più articolato, anche se il risultato sarà il medesimo.
<?php
class MioTest
{
private $cognome;
private $nome;
// metodo costruttore
public function __construct($x,$y){
$this->cognome=$x;
$this->nome=$y;
echo "ciao da ".$this->cognome." ".$this->nome;
}
}
// creo un oggetto di classe "MioTest"
$obj= new MioTest("Rossi","Paolo");
?>
In questo script ho operato così
- ho definito due proprietà chiamate "nome" e "cognome" con visibilità private (potevo anche indicarla come protected o public, tanto li uso solo all'interno di questa classe)
- nel metodo costruttore, ricevo i due parametri x e y, come nell'esempio precedente.
- all'interno del metodo costruttore ho assegnato i due valori ricevuti, "x" e "y", alle due proprietà "cognome" e nome"
- infine ho effettuato un echo delle due proprietà
Potrebbe interessarti
- Le interfacce in PHP
- Le classi astratte e i metodi astratti, in PHP
- Le costanti di una classe in PHP
- Come estendere una classe in PHP ed il concetto di ereditarietà.
- Le proprietà e i metodi STATICI in PHP
- Autoloading classi in PHP, con un occhio ai namespace ed allo standard di programmazione psr-4.
- Cos'è il type hinting, la sua evoluzione nelle varie versioni di PHP, ed il controllo sulla tipologia di dato con la modalità strict_mode.
- I metodi magici in PHP.
- Cosa sono i namespace in PHP. La guida completa, con esempi.
- Cosa sono i trait in PHP. La guida completa con esempi.
- Le classi in PHP. introduzione alla programmazione in stile OOP, metodi e proprietà di una classe.