Pubblico di seguito una classe a cui sto lavorando da qualche giorno. Essa consente di rendere l'interazione con un database compatibile con PDO molto più simile alla realtà: ogni record è un oggetto le cui proprietà sono le colonne del record. Esse si possono modificare semplicemente modificando il valore della proprietà corrispondente e poi eseguendo il metodo commit(). È anche possibile accedere alle colonne come in un array.
Le funzioni in realtà sono molte di più: è possibile anche estendere la classe di base Database_Record per impostare dei metodi che verranno usati al posto dei getter e dei setter di default (e quindi eseguiti durante ogni tipo di accesso alle colonne: con i metodi __get, __set, __isset e __unset ma anche come array).
Questo è molto utile se come me sviluppate applicazioni fortemente orientate agli oggetti. Supponiamo ad esempio di avere una tabella users con all'interno varie colonne tra cui group, in relazione con la tabella groups. Non potete salvare un oggetto nel database (in realtà si può, ma è piuttosto sconveniente). Basterà così creare la classe User e strutturarla in questo modo:
La mia classe applicherà automaticamente i metodi setGroup e getGroup quando si tenterà di impostare o recuperare il valore della proprietà, convertendo il valore in numero o in oggetto on-the-fly.
La classe è ampiamente documentata e sono presenti due esempi, quindi non mi dilungo ulteriormente. Fatene buon uso e fatemi sapere cosa ne pensate.
Le funzioni in realtà sono molte di più: è possibile anche estendere la classe di base Database_Record per impostare dei metodi che verranno usati al posto dei getter e dei setter di default (e quindi eseguiti durante ogni tipo di accesso alle colonne: con i metodi __get, __set, __isset e __unset ma anche come array).
Questo è molto utile se come me sviluppate applicazioni fortemente orientate agli oggetti. Supponiamo ad esempio di avere una tabella users con all'interno varie colonne tra cui group, in relazione con la tabella groups. Non potete salvare un oggetto nel database (in realtà si può, ma è piuttosto sconveniente). Basterà così creare la classe User e strutturarla in questo modo:
PHP:
<?php
class User extends Database_Record
{
protected function setGroup($new_group)
{
return $new_group->id;
}
protected function getGroup($group_id)
{
try {
return new Group('id', $group_id);
}
catch (DatabaseException $e) {
return false;
}
}
}
?>
La classe è ampiamente documentata e sono presenti due esempi, quindi non mi dilungo ulteriormente. Fatene buon uso e fatemi sapere cosa ne pensate.