2012-01-09 13 views
6

My question is fairly clear, e Mi piacerebbe davvero sentire alcuni motivi per la risposta.Vuoi avvolgere PDO o estenderlo?

Ulteriori informazioni:

  • Non faccio uso di alcun tipo di PHP Framework.
  • PHP> 5.3.

Aggiornamento:

In questo momento non ho molto di restrizioni in tutto il mio progetto, si tratta di un progetto di un uomo ancora e ho lavorato duramente per rendere tutto il più lose accoppiati e modulare possibile. come mi è stato detto, non mi è piaciuta l'API PDO dopo averla giocata per un po ', ma non è un grosso problema se attenersi alla sua API pubblica mi darà maggiore flessibilità o è considerata una buona pratica.

Quindi la mia domanda è: cosa guadagneresti e perderai usando la composizione o le ereditanze considerando che l'oggetto in questione è uno stesso livello di astrazione, PDO in questo caso?

tl; dr: Un progetto uomo che cerca di essere il più possibile modulare, Composizione o di successione per l'utilizzo di un 3 ° livello di astrazione partito (DOP in particolare)?

Nota: se non è il posto giusto, votare per migrare ai programmatori. e mi dispiace per il mio cattivo inglese.

+0

@Downvoter: cura di elaborare? –

+3

Questo invita piuttosto a una discussione (è per questo che stai vedendo i voti, e stiamo vedendo le bandiere). Se potessi rivedere questo per includere il tuo gioco finale in questo scenario ... le risposte potrebbero essere molto più obiettive e questo probabilmente sarebbe in discussione su Programmers SE. Ricorda, Stack Overflow è per i problemi reali che stai affrontando, quindi in ogni caso è necessario uno scenario più concreto (se teorico, i programmatori sarebbero il posto migliore). –

+0

@TimPost Grazie per aver chiarito le cose, aggiornato la mia domanda. –

risposta

5

Sono un fan del wrapping per le classi di "terze parti", in questo modo sei molto meno dipendente dal supporto per la classe. Se qualcuno in futuro dovesse cambiare i nomi delle funzioni su PDO, il tuo codice cambierebbe attorno a tutto il tuo codice. Con il wrapping solo la classe wrapping cambierebbe in quanto la tua interfaccia è indipendente.

3

Generalmente non mi preoccuperei di avvolgerlo a meno che non ti piaccia l'API. Se decidi di seguire questa strada, utilizzerei lo Idiorm (e l'eventuale Paris per il record attivo) piuttosto che il mio.

Non avrei mai pensato di estendere un'estensione di terze parti a meno che non avessi pianificato di mantenere il suo codice o di non aggiornare mai quella libreria. Con il wrapping, si esegue il sandboxing della libreria di terze parti lontano dal proprio codice il più possibile, in modo tale da essere meno interessati dalle modifiche al codice.