Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    OOP e il dilemma dell'output html

    Secondo post, per oggi

    Vorrei chiedervi un parere su come mandare in output elementi html in una struttura ad oggetti.
    Nel mio progetto infatti ho una serie di classi che si occupano di tutta la logica, come insegnano i vari pattern di design a disposizione. Ora sono al punto in cui i dati generati devono essere visualizzati, diciamo in una tabella; si apre un bivio di fronte a me.
    La prima strada prevede un metodo di una classe (che chiamerò "visualizzatore") con il quale stampare a video tutta la tabella. Ad esempio (pseudocodice)

    Codice PHP:
    function mostraUtenti()
    {
        echo <
    table>;
        
        for (...)
        {
            echo
                <
    tr>
                    <
    td>".$valore[$indice]."</td>
                </
    tr>
        }
        echo </
    table>;

    Questo metodo stampa TUTTO, codice della tabella compreso; così nel file php che conterrà anche l'html io non dovrò fare altro che richiamare quella funzione.

    Il secondo approccio che mi è venuto in mente è quello di far restituire a mostraUtenti() un array di valori che verrà poi ciclato nella pagina che conterrà l'html.
    Una cosa del genere:

    Codice PHP:
    function mostraUtenti()
    {
        for (...)
        {
            
    $out[$indice] = qualche_operazione($valore[$indice]);
        }
        return 
    $out;

    che nella pagina finale dell'html sarà utilizzato così:

    Codice PHP:
    <table>
    <?php
    $valori 
    $visualizzatore->mostraUtenti();

    for (
    $i 0$i count($valori); $i++)
        echo 
    "<td>".$valori[$i]."</td>";
    ?>
    </table>
    Ho la sensazione che il secondo metodo sia più efficace, soprattutto nel caso debba arricchire il codice con css o comunque strutturazioni che vanno al di fuori della programmazione php.
    Voi cosa ne pensate?
    Come sempre vi ringrazio in anticipo.

  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Direi che il secondo approcio è sicuramente il migliore poichè è decisamente più flessibile e facilmente mantenibile e tra l'altro è quello che è alla base del famoso pattern MVC

    Ti dirò di più, nel secondo esempio che hai riportato tu includi le chiamate alle classi che gestiscono la logica nel codice che stampa i dati mentre potresti crearti delle classi che fungano da controller, ovvero che ricevono la chiamata, richiamano le tue classi che gestiscono la logica e passano i dati ricevuti alle viste, in modo che il codice sia ancora più modulare e disaccopiato.

  3. #3
    Ti sei fermato sul momento più bello

    Comunque la tua proposta è molto interessante - sono un cultore degli strati software, attendo con ansia la continuazione!

  4. #4
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Ops scusa non so che è successo, maledetta abitudine di non rileggere i post

    Volevo scriverti che potresti capire meglio il paradigma MVC guardando i tutorial sull'uso di tali framework (cake php, piuttosto che symfony) e se hai qualche oretta potresti provare a implementarti te un qualcosa del genere, chiaramente in modo semplicificato

  5. #5
    Giusto, quindi in poche parole ho lo strato della logica, ho lo strato della "vista" e quindi mi mancano i controllori che stanno a metà tra i due, dico bene?
    Già mi hai chiarito le idee sui due approcci che ho riportato, ora mi studio un po' cake php... ovviamente ti ringrazio!

  6. #6
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Esatto hai capito bene

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 © 2024 vBulletin Solutions, Inc. All rights reserved.