- Home
- Categorie
- Coding e Sistemistica
- Coding
- Una classe PHP che interfaccia una singola tabella
-
Una classe PHP che interfaccia una singola tabella
Ciao a tutti.
Mi sono trovato molte volte in questa situazione e penso che mi ci ritroverò molte altre volte così vorrei discutere con voi riguardo alla "best practise".Supponiamo di avere una tabella Persona con campi come 'data_di_nascita', 'sesso', 'stato_civile',....
Allora mi viene spontaneo creare una classe 'Persona' che ha come campi, per esempio, $data_di_nascita, $sesso, $stato_civile.Quindi posso creare tranquillamente un nuovo oggetto persona chiamando il costruttore che poi memorizzerà i dati nel database.
Ma cosa fare quando devo estrarre delle persone dal database? Conviene usare la stessa classe?
Il fatto è che però in PHP non posso fare l'overload del costruttore. Se lo possi fare creerei due costruttori:
function Persona($id) a cui passo un ID e lui va a pescare i dati relativi alla persona con quell'ID (quindi utile per il retrieving)
funcion Persona($data_di_nascita,$sesso,...) a cui passo tutti i dati che poi verranno memorizzati.
MA in PHP non lo posso fare.Voi che tecnica utilizzate per questo scopo?
Inoltre se i campi della classe hanno lo stesso nome di quelli della tabella, posso utilizzare qualche tecnica particolare per velocizzare le varie operazioni?
Vorrei fare le cose in modo intelligente e pulito.
-
crei due funzioni una per l'insert e una per il select
-
@Skyline said:
crei due funzioni una per l'insert e una per il select
E il costruttore come lo faccio?
Quello che mi piacerebbe è non creare una classe che serva solo come per contenere i metodi per dialogare col database.
Quello che vorrei è proprio astrarre completamente il database e avere sempre un oggetto coerente. Vorrei avere una classe Uomo [per esempio] come la farei se non ci fosse di mezzo il database. Spero di essermi spiegato decentemente.
-
ma non è meglio creare una classe per tutte le query??? e non solo 2? :S
-
@Skyline said:
ma non è meglio creare una classe per tutte le query??? e non solo 2? :S
Skyline, questo non è Object Oriented Design. Così non programmi ad oggetti...crei semplicemente delle classi.
Io vorrei applicare un buon paradigma ad oggetti al mio caso.Sei d'accordo con me?
-
Io farei due classi, una dedicata alla tabella nell'insieme e una che opera a livello di record. Così separi bene metodi e proprietà