• User Newbie

    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.


  • User Attivo

    crei due funzioni una per l'insert e una per il select


  • User Newbie

    @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.


  • User Attivo

    ma non è meglio creare una classe per tutte le query??? e non solo 2? :S


  • User Newbie

    @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?


  • Super User

    Io farei due classi, una dedicata alla tabella nell'insieme e una che opera a livello di record. Così separi bene metodi e proprietà