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.
Commentati Recentemente