<?php 
 
require_once 'codicefiscale.class.php'; 
 
/** 
 * In questo esempio ho esteso la classe CodiceFiscale_Abstract ed ho 
 * implementato il metodo astratto _calcolaCatastale() per andare a leggere 
 * un file contenente un array nel formato [CODICE_PROVINCIA][NOME_COMUNE] 
 * e caricarlo in una variabile.. 
 *  
 * Ovviamente è possibile implementare il metodo per recuperare il catastale 
 * a piacimento (database, webservice, ecc...) 
 */ 
class CodiceFiscale extends CodiceFiscale_Abstract { 
     
    private $_db; 
     
    public function leggiCatastali($filename) { 
        $this->_db = unserialize(file_get_contents($filename)); 
    } 
     
    protected function _calcolaCatastale() { 
        if (!$this->_db) { 
            throw new CodiceFiscale_Exception('impossibile caricare il file dei catastali'); 
        } 
        $comune    = strtoupper($this->comune); 
        $provincia = strtoupper($this->provincia); 
        if (!isset($this->_db[$provincia][$comune])) { 
            $message = sprintf("codice catastale non trovato (provincia: %s, comune: %s)", $provincia, $comune); 
            throw new CodiceFiscale_Exception($message); 
        } 
        return $this->_db[$provincia][$comune]; 
    } 
} 
 
// funzione di comodità per generare un array da passare alla classe 
function componi($nome, $cognome, $data, $comune, $provincia, $sesso) { 
    return [ 
       'nome'      => $nome, 
       'cognome'   => $cognome, 
       'data'      => $data, 
       'comune'    => $comune, 
       'provincia' => $provincia, 
       'sesso'     => $sesso  
    ]; 
} 
 
// istanzio la classe e carico il db dei catastali 
$cf = new CodiceFiscale(); 
$cf->leggiCatastali('catastali.txt'); 
$dati = array(); 
 
// Non validi 
$dati[] = componi(null, 'cognome', '01-01-1970', 'milano', 'mi', 'm'); 
$dati[] = componi('nome', null, '01-01-1970', 'milano', 'mi', 'm'); 
$dati[] = componi('nome', 'cognome', null, 'milano', 'mi', 'm'); 
$dati[] = componi('nome', 'cognome', '01-01-1970', null, 'mi', 'm'); 
$dati[] = componi('nome', 'cognome', '01-01-1970', 'milano', null, 'm'); 
$dati[] = componi('nome', 'cognome', '01-01-1970', 'milano', 'mi', null); 
$dati[] = componi('nome', 'cognome', '565-55-5555', 'milano', 'mi', 'm'); 
 
// Validi 
$dati[] = componi('A', 'B', '01-05-1977', 'rho', 'mi', 'm'); 
$dati[] = componi('A', 'B', '01-05-1977', 'rho', 'mi', 'f'); 
$dati[] = componi('Matteo', 'De Gasperi', '15-09-2001', 'roma', 'rm', 'm'); 
$dati[] = componi('Ramona', 'Si', '21-12-1982', 'senago', 'mi', 'f'); 
$dati[] = componi('Babbo', 'Natale', '25-12-1938', 'Cinisello Balsamo', 'MI', 'm'); 
 
foreach($dati as $persona) { 
    try { 
        $cf->importa($persona); 
        print "Codice Fiscale: ". $cf->calcola() . "\n"; 
    } catch (CodiceFiscale_Exception $e) { 
        print "Errore: ". $e->getMessage() . "\n"; 
        continue; 
    } 
} 
 
// Metodo alternativo 
$cf->nome = 'Me'; 
$cf->cognome = 'Medesimo'; 
$cf->data = '09-09-1982'; 
$cf->comune = 'senago'; 
$cf->provincia = 'mi'; 
$cf->sesso = 'm'; 
 
print "Codice Fiscale (alternativo): ". $cf->calcola() . "\n"; 
 
$cf->formatoData('d/m/Y'); 
$cf->data = '09/09/1982'; 
 
print "Codice Fiscale (alternativo): ". $cf->calcola() . "\n"; 
 
 
 
 
 |