sabato 30 luglio 2011

Includere le classi automaticamente

Quando lavoriamo con le classi, al momento di includerle ci troviamo di fronte a delle prese di posizione: usare un autoload? includere un file classi.php e chi si è visto si è visto?
Io faccio così:
Per la pulizia del codice mantengo le classi in file separati, questo crea forse un proliferare di file, ma so che se devo andare a modificare la classe fattura la troverò in una cartella classes e in un file chiamato fattura.class.inc.
Se lavoro in un programma solo mio, che non utilizza altre classi, una classe autoloader va benissimo:
class ClassAutoloader {
        public function __construct() {
                        spl_autoload_register(array($this, 'loader'));
        }
        private function loader($className) {
            include '../../includes/classes/'.$className . '.class.inc';
        }
    }

    $autoloader = new ClassAutoloader();

Ma se al mio programma aggiungo una classe per generare PDF (TCPDF) o Smarty, o qualsiasi classe già costruita?

Nel caso di Smarty, questo richiama tutta una serie di sottoclassi che non sono ordinate secondo la nostra idea, e quindi avremo una serie fatal error.

Risultato? o cambiamo tutta la struttura di classi di quanto abbiamo incluso o ci affidiamo a qualcosa d'altro.
Io mi sono fatto una funzione d'inclusione che mi permette di inserire le classi che voglio, in questo modo:
function includiclassi($text) {
    $classi = explode(',', $text);
    foreach ($classi as $value) {
        include '../../library/include/classes/' . trim($value) . '.class.inc';
    }
}
che richiamo in questo modo:
includiclassi('Fattura,Rigo_input,Smarty,Cli_for,Rigo');
Buon lavoro.

Nessun commento:

Posta un commento

Ti potrebbero interessare:

Related Posts Plugin for WordPress, Blogger...