Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    PHP OOP: piccola discussione "filosofica"... è corretto procedere cosi?

    Buongiorno a tutti,
    dopo anni di codice strutturale sto cominciando a studiare un po' di programmazione OOP.

    Devo dire che dopo il primo scoglio sembra "facile" proseguire e aderire ai suoi meccanismi...

    Comunque bando alle ciance e vengo al mio ragionamento.

    Mi son creato la mia personale classe Crud che come dice il nome performa le più classiche query SQL (tramite mysqli e prepared statement, of course...) di Create, Retrieve, Update e Delete.

    Ora sto realizzando un piccolo progetto per un distributore di carburanti con più pompe che vuole tenere aggiornati sul suo sito i prezzi praticati ai vari distributori.

    Tale webapp esporrà quindi via API i prezzi da reinglobare sul sito.

    Fin qui nulla di eccezionale, ho cominciato a creare anche una nuova classe

    Codice PHP:
    class Distributore
    {
    // varie

    solo che al suo interno ho cominciato a chiamare metodi della CRUD, come dire

    Codice PHP:
    public function getPrezzoBenzina($id) {
        
    $prezzo_benzina $this->distributore->sql('SELECT prezzo_benzina FROM prezzi WHERE id = '.$id);
        return 
    $prezzo_benzina

    (ho semplificato al max il codice, giusto per dare l'idea).

    Mi sorge questo problema... Ma mi serve realmente? In realtà potrei gestire direttamente il tutto tramite la CRUD e non usare una nuova classe...

    Cosa mi sto perdendo? Cosa allora sto sbagliando?

    Grazie mille per i vs punti di vista!

  2. #2
    filosoficamente parlando esistono dei principi concreti da usare quando si programma in OOP.. e questi principi servono proprio per risolvere questi e altri problemi.


    Operativamente parlando una classe CRUD ora come ora non ha molto senso di esiste visto che php ha a disposizione PDO per queste cose. E' nativo e caldamente consigliato.

    senza un'analisi preliminare farai molta fatica a mettere insieme tutti i pezzi
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Ciao, quoto con Al_katraz984, esiste PDO che ti permette di gestire connessione con base dati e relative operazioni.
    E' corretto avere una classe per ogni entità del tuo dominio; avere una classe che gestisce tutte le tue entità (se ho capito bene la tua domanda) è concettualmente sbagliato.

    Piuttosto io farei una interfaccia o una classe astratta che definisce le operazioni base per quanto riguarda il CRUD e farei ereditare le varie entità da questa.
    http://www.morialberto.it

  4. #4
    hanno "inventato" i design patterns apposta per rispondere a queste domande http://en.wikipedia.org/wiki/Software_design_pattern

    EDIT: per non parlare che prima devi fare l'analisi del progetto prima di pensare ai DP da utilizzare, prima ancora di scegliere la tecnologia da utilizzare addirittura
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Quoto Santino sui pattern, non puoi fare vera OOP senza.
    Sui pattern sono stati scritti libri e libri, mi permetto di consigliarti, come punto di partenza, questo pattern: http://it.wikipedia.org/wiki/Princip...nsabilit%C3%A0
    Ogni volta che scrivi una classe, devi sforzarti di fargli fare una cosa sola. Io per esempio non ho mai usato una "classe CRUD", perché il CRUD è qualcosa che investe vari strati di un'applicazione e richiede quindi varie classi.
    Chi viene dal procedurale a un certo punto obietta che in questo modo si fanno "troppe classi": ecco, la questione è proprio che le classi non hanno un costo, più ce ne sono e meglio è

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.