<?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";
|