Costruttori multipli in classe PHP [PILLOLA]

E’ da quasi un annetto che sono stato catapultato da un mondo “plain text” monolitico, al mondo dell’OOP, Programmazione Orientata ad Oggetti.
Inizialmente molto avverso a questo tipo di filosofia, non riuscivo a comprenderne i benefici e l’utilità di questo paradigma.
Fortunatamente lo scetticismo è passato e dopo essere entrato nell’ottica della programmazione ad oggetti, posso dire che è proprio “na figata”.
Sempre per lo stesso motivo per il quale sono stato proiettato nel mondo OOP, è il mio allontanamento dal PHP, linguaggio da me preferito per sviluppare il web.
Purtroppo, ma per fortuna, a lavoro si usa Java e con esso ho scoperto i costruttori, la loro funzionalità e la possibilità di averne più di uno negli oggetti che creo.
Ultimamente sto facendo un lavoretto web per me stesso, e ho voluto provare l’ebrezza dell’OOP applicata al PHP. Devo dire che mi sto trovando molto bene, ma la cosa che mi è mancata sin da subito è stata la possibilità di avere più costruttori negli oggetti.
Smanettando e cercando un pò in giro, ho trovato la soluzione che ti propongo qui sotto.

Costruttori multipli in classe PHP:

class A 
{ 
    function __construct() 
    { 
        $a = func_get_args(); 
        $i = func_num_args(); 
        if (method_exists($this,$f='__construct'.$i)) { 
            call_user_func_array(array($this,$f),$a); 
        } 
    } 
    
    function __construct1($a1) 
    { 
        echo('Chiamato costruttore con un parametro: '.$a1.PHP_EOL); 
    } 
    
    function __construct2($a1,$a2) 
    { 
        echo('Chiamato costruttore con due parametri: '.$a1.','.$a2.PHP_EOL); 
    } 
    
    function __construct3($a1,$a2,$a3) 
    { 
        echo('Chiamato costruttore con tre parametri: '.$a1.','.$a2.','.$a3.PHP_EOL); 
    } 
} 
$o = new A('casa'); 
$o = new A('casa','albero'); 
$o = new A('casa','albero','macchina'); 

Come risultato avremo:

 
// Chiamato costruttore con un parametro: casa 
// Chiamato costruttore con due parametri:  casa, albero 
// Chiamato costruttore con tre parametri: casa, albero, macchina

Spero possa esserti utile.

Potrebbero interessarti anche...