Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732

    Dubbio impostazione codice OOP

    Ciao a tutti,

    vorrei chiedervi delucidazioni su come sia meglio impostare del codice PHP 5 OOP.

    Nello specifico: mettiamo di avere un classico sito di e-commerce nel quale avrò diversi utenti con i rispettivi ordini.

    Partendo da un classe "Utente" qual'è il modo migliore per accedere agli ordini dell'utente "X"?

    E' corretto creare un metodo, nella classe "Utente", chiamato "getOrdini" che attiva una query sql per recupera gli ordini relativi (come faccio ora), oppure è più corretto creare una classe "Ordine" a cui accedere indirettamente da "Utente"?

    Es:
    Codice PHP:
    $ordini $utente->ordini(); // istanzia un oggetto "Ordini"
    $lista_ordini_utente $ordini->getOrdini(); // recupera gli ordini dell'utent X 
    Con la prima chiamata
    Codice PHP:
    $ordini $utente->ordini(); // istanzia un oggetto "Ordini" 
    la mia idea era quella di passare l'ID dell'utente al costruttore di "Ordini".

    Es:

    Codice PHP:
    // sono nella classe Utente
    public function ordini() {
       
    $ordini = new Ordine($this->id);
       return 
    $ordini;

    Spero di non aver detto delle cavolate ma con il Design Pattern sono abbastanza a digiuno.

    Grazie in anticipo.

  2. #2
    Spero di non aver detto delle cavolate ma con il Design Pattern sono abbastanza a digiuno.

    scusa ma il design pattern dov'è ?


    Al limite si potrebbe parlare di aggregation o composition.
    A parte questo mi sembra il giusto
    procedimento il model user avrà la relazione
    uno a molti con il model ordine.

    Per fare le cose ancora + oop
    non ti resta che fare i due mapper.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Originariamente inviato da whisher
    scusa ma il design pattern dov'è ?
    E' per questo che ho detto che ne ero a digiuno

    Al limite si potrebbe parlare di aggregation o composition.
    A parte questo mi sembra il giusto
    procedimento il model user avrà la relazione
    uno a molti con il model ordine.

    Per fare le cose ancora + oop
    non ti resta che fare i due mapper.

    Mapper? Meglio che mi documento un pò in rete

    Un'altra cosa, le classi "Utente", "Ordine" ecc in teoria dovrebbero gestire sia la singola entità singolo utente, singolo ordine sia una "collezione" di essi giusto?

    Quindi per dire io uso la classe "Ordine" sia per recuperare 1 o N record a DB

    E' corretto? Non devo creare una classe "Ordini" quando ho bisogno di recupera un set di record perchè magari sto filtrando per gli ordini di un determinato arco temporale piuttosto che gli ordini in un determinato status vero?

    Hai dei link da suggerimi per approfondire l'argomento?

    Grazie ancora whisher

  4. #4
    Originariamente inviato da Sgurbat
    E' per questo che ho detto che ne ero a digiuno



    Mapper? Meglio che mi documento un pò in rete
    Ti conviene leggere http://www.ebook3000.com/PHP-5-Objec...tice_4471.html veramente un ottimo libro.

    Un'altra cosa, le classi "Utente", "Ordine" ecc in teoria dovrebbero gestire sia la singola entità singolo utente, singolo ordine sia una "collezione" di essi giusto?
    Quindi per dire io uso la classe "Ordine" sia per recuperare 1 o N record a DB
    Imho non è giusto una collezione è un insieme (solitamente un array con iterator annesso) di istanze della stessa classe.

    Dai un occhio anche a http://www.sitepoint.com/forums/forumdisplay.php?f=147

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Originariamente inviato da whisher
    Imho non è giusto una collezione è un insieme (solitamente un array con iterator annesso) di istanze della stessa classe.
    Quindi in teoria come è meglio procedere per leggere N record dalla tabella ordini associati ad un utente?

    Con un metodo nella classe Utente "getOrdini()" che recupera un resultset e poi su ciascun record istanzia un oggetto "Ordine"?

    Oppure non è corretto perchè la sola classe "Ordine" che deve aver accesso al tabella "ordini"?

    Ammetto che sono un pò confuso. :master:

    Ho notato che il primo link, quello dell'Ebook, non funziona.

    P.S. Il Pattern MVC in effetti lo sto già studiando ma con Ruby on Rails.

    Tnx.

  6. #6
    Quindi in teoria come è meglio procedere per leggere N record dalla tabella ordini associati ad un utente?

    Con un metodo nella classe Utente "getOrdini()" che recupera un resultset e poi su ciascun record istanzia un oggetto "Ordine"?

    Oppure non è corretto perchè la sola classe "Ordine" che deve aver accesso al tabella "ordini"?

    Sviluppa un mapper e vedrai che ti si chiariscono le idee
    Il mapper per la tabella ordini ti restituirà nel caso di findAll
    ti restituirà una collezione di oggetti di tipo ordine.http://www.phpro.org/tutorials/Intro...P-PDO.html#8.6

    Boh il link a me funzia





    PS

    L'altro link è un forum sui design pattern
    non solo mvc e c'è della roba molto interessante
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Originariamente inviato da whisher
    Sviluppa un mapper e vedrai che ti si chiariscono le idee
    Ok quindi alla fine il "Mapper", in questo caso, sarebbe un pò come avere una classe "Ordini" che tramite metodi propri: get, all, first, ecc. consente di recuperare N record da una tabella.

    http://phpdatamapper.com/documentation/usage/finders/

    Nel mio caso sarebbe come avere delle classi: Utente, Utenti, Ordine, Ordini ecc. giusto?

    Le versioni "pluralizzate" saranno i Mapper per le collezioni di oggetti mentre: Utente, Ordine ecc. "lavorano" sul singolo oggetto.

    La logica è la stessa usata in RoR, a fronte di un Model, es: Product posso fare:

    codice:
     
    @products = Product.find(:all)
    Parallelamente
    Codice PHP:
    $ordiniMapper = new Ordini();
    $ordini $ordiniMapper->find('all'
    Spero di essere sulla strada giusta.

  8. #8
    $ordiniMapper = new Ordini();
    $ordini = $ordiniMapper->find('all')
    Il mapper va nel model che avrà getMapper e setMapper

    http://framework.zend.com/docs/quick...database-table

    c'è un ottimo esempio è per zf ma rende l'idea

    Il libro che ti ho segnalato ha dei bei esempi
    tra l'altro è affrontato il design patter
    identity map http://schlitt.info/opensource/blog/...p_pattern.html

    qui trovi altri esempi
    http://www.sitepoint.com/forums/showthread.php?t=619461


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Se volessi farmi un'idea più compiuta del tutto mi consiglieresti di provare a dare uno sguardo a qualche Framework MVC?

    Nel caso: CakePHP, Symfony, CodeIgniter?

    Grazie ancora.

  10. #10
    Originariamente inviato da Sgurbat
    Se volessi farmi un'idea più compiuta del tutto mi consiglieresti di provare a dare uno sguardo a qualche Framework MVC?

    Nel caso: CakePHP, Symfony, CodeIgniter?

    Grazie ancora.
    Il consiglio che ti posso dare è questo
    prima approfondisci oop e design pattern
    poi passi ad un fw.


    Sto smanettando con zf non mi sembra male

    sento parlare bene di Symfony ma non ci ho ancora
    fatto un giro


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.