Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Io nella classe che uso per l'astrazione al database ho creato 2 metodi principali con diverse opzioni, ma che fondamentalmente sono getlist e getById, con getlist faccio una query di selezione di N film a seconda dei filtri che passo, mentre con getbyId prendo tutti i dati di un unico record.

    Ti dico per esperienza che fare N query per ottenere una lista potrebbe all'inizio non darti problemi, ma in seguito noteresti i problemi dati da questo tipo di approccio.

    Eviterei anche una query per selezionare solo il titolo o altre proprietà, fai una query che riempia le proprietà del tuo oggetto, poi se vuoi scrivere il metodo getTitolo attingerai alle proprietà dell'oggetto, e non al database per ogni minimo dato.

    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469

    Re: Domanda sull'approccio all'OOP applicato a MySQL

    Originariamente inviato da T. VERCETTI
    Forse c'è qualcosa che non va nell'approccio che do all'OOP quando devo lavorare con dati presenti su un database(...)
    La versione breve è "non c'è nulla di OOP dentro un RDBMS [*a parte alcune estensioni GIS]".

    Sono due mondi ben distinti, e ti tocca farli convivere "a mano"

  3. #3
    Mah, così su due piedi puoi fare una classe che si occupa di recuperare le info dal db e una che si occupa di creare il vero e proprio oggetto film...
    La prima classe prende in ingresso gli ID (o i titoli o gli altri parametri di ricerca) e non fa altro che eseguire la query, recuperare gli array (col fetch_assoc) e metterseli in una bella variabile d'istanza.

    Successivamente, nel tuo script, cicli sui valori di questa variabile di istanza per "costruire" gli oggetti Film che poi ti manipoli come vuoi.

    Script di esempio:
    codice:
    $res = new fetch_films("titoli", $array_filtro); // Creo la classe fetch_films e istruisco di recuperare in base ai titoli che passo in $array_filtro
    foreach ($res->films as $film_record) {
       $film_trovato = new film($film_record); // Costruisco un "film" partendo dall'array $film_record
       $this->output .= $this->skin->render_film($film_trovato); // Costruisco la grafica per "visualizzare il film
       unset($film_trovato); // Liberiamo memoria, che male non fa mai!
    }
    print $this->output; // Scrivo a video l'output
    Modi comunque ce ne sono mille, dipende tutto da come hai impostato il progetto e dai risultati che vuoi ottenere

  4. #4
    No, con la fetch_films ottieni un array di array (completi, se serve) dei film in base al filtro impostato.
    Ottenuto il vettore di interesse con i dati di interesse, cicli su questo risultato per costruire le instanze di film che poi manipoli come meglio ti aggrada.

    $res->film = array( array("id" => 1, "titolo" => "pippo", ...), array("id" => 2, "titolo" => "pluto", ...), .. )

    Cicli su questo array per costruire "n" istanze film o per costruire l'output.


  5. #5
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    stiamo parlando di astrazione ai database o di un tentativo di astrazione?perchè l'astrazione è tutt'altra cosa....anche perchè se volessi utilizzarla per il tuo problema ,avresti la sicura soluzione .....utilizzando soprattutto ORM

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.