Ho scritto la seguente classe:
<?php // 4 o superiore
// classe di gestione semplice database basato su
// un file di testo creata a scopo puramente
// dimostrativo, da non prendere come modello.
class ManagerClienti {
// variabile contenente il path
// completo del file database
var $databaseFile;
// costruttore, accetta
// il nome del file e lo assegna
function ManagerClienti($databaseFile) {
$this->databaseFile = $databaseFile;
}
// metodo per aggiungere
// un cliente al database
function AggiungiCliente($cliente) {
// variabile di controllo esistenza cliente
$esistente = false;
// recupero lista clienti
$clienti = $this->ListaClienti();
// per ogni array cliente presente in lista ..
for($a = 0, $b = count($clienti); $a < $b; $a++) {
// si verifica se il nome è uguale
// a quello da aggiungere
if($clienti[$a][0] === $cliente[0]) {
// in tal caso è un duplicato
// imposto esistente come vero
// ed esco dal ciclo for
$esistente = true;
$a = $b;
}
}
// se non è stato trovato il cliente
// con lo stesso nome
if($esistente === false) {
// si aggiunge alla lista
array_push($clienti, $cliente);
// e si salva tale lista
$this->SalvaLista($clienti);
}
// per eventuali implementazioni
// si fa tornare il valore esistente
// al fine di poter comunicare
// se il cliente fosse già presente o meno
// (cosa che non accade in questo esempio)
return !$esistente;
}
// metodo per eliminare
// un cliente dal database
function EliminaCliente($nomeCliente) {
// variabile array per ricreare la lista
$clienti = array();
// lista di tutti i clienti
$vecchiClienti = $this->ListaClienti();
// per ogni array cliente ...
for($a = 0, $b = count($vecchiClienti); $a < $b; $a++) {
// se il nome non corrisponde ad uno presente in lista
if($vecchiClienti[$a][0] !== $nomeCliente)
// si aggiunge questo cliente alla nuova lista
array_push($clienti, $vecchiClienti[$a]);
}
// si salva la lista clienti
$this->SalvaLista($clienti);
}
// metodo per ricevere
// la lista di tutti i clienti
function ListaClienti() {
// variabili utili per le operazioni di parsing file
$lista = array();
$clienti = array();
// se il database ha almeno un cliente
// quindi pesa più di 0 bytes ...
echo "1";
if(filesize($this->__databaseFile) > 0) {
// per ogni "a capo" del file si crea una lista
$clienti = explode("\r\n", $this->__leggiFile());
// per ogni riga di questa lista
for($a = 0, $b = count($clienti); $a < $b; $a++)
// si crea un cliente separando i dati attraverso il carattere |
array_push($lista, explode('|', $clienti[$a]));
}
// restituzione lista
return $lista;
}
// metodo per salvare su un file di testo
// una lista di clienti
function SalvaLista($clienti) {
// stringa da scrivere sul file
$contenutoFile = "";
// i clienti vengono messi in ordine alfabetico
// (ovvero per nome, non per altro)
// al fine di facilitare l'eventuale ricerca
// o visualizzazione
array_multisort($clienti, SORT_ASC);
// per ogni array cliente ...
for($a = 0, $b = count($clienti); $a < $b; $a++) {
// si aggiunge al contenuto le informazioni
$contenutoFile .= "{$clienti[$a][0]}|{$clienti[$a][1]}|{$clienti[$a][2]}";
// e se non si è all'ultimo cliente ...
if($a < ($b-1))
// si aggiunge l' "a capo" per separare i clienti
$contenutoFile .= "\r\n";
}
// si salva definitivamente il tutto su file
$this->__scriviFile($contenutoFile);
}
// metodo "privato" per leggere il contenuto di un file,
// in questo caso il semplice database testuale
function __leggiFile() {
$contenutoFile = file_get_contents($this->databaseFile);
return $contenutoFile;
}
// metodo "privato" per salvare una stringa sul
// semplice databse testuale
function __scriviFile(&$contenutoFile) {
$fp = fopen($this->databaseFile, "a");
fwrite($fp, $contenutoFile);
fclose($fp);
}
}
?>
il file non viene scritto..qual'è il problema?
tulipan