Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: MVC chiarimenti

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158

    MVC chiarimenti

    Ciao a tutti!
    Sto cominciando a familiarizzare e a fare i primi passi con MVC... avrei bisogno di alcuni chiarimenti.

    Poniamo che io voglia mostrare in una pagina le info di un utente registrato.
    avrò 4 files:
    index.php
    controller.php
    model.php
    view.php

    la index avrà un codice del genere:
    Codice PHP:
    <?php

    include 'controller.php';

    $controller = new Controller();
    $controller ->controlLogin($_SESSION['utente']);

    ?>
    la pagina controller sarà più o meno così:

    Codice PHP:
    <?php
    // includo il model
    include 'model.php';

    class 
    Controller {

    public 
    $model;

    public function 
    __construct(){
    // creo l'istanza della classe Model
    $this->model = new Model();
    }

    public function 
    controlLogin($utente){
    // se c'è una sessione aperta applico il metodo mostra() della classe Model e carico una vista particolare
    if($utente){
    $this->model->mostra($utente);
    include 
    'views.php';
    }else{
    // altro metodo e altra vista
    $this->model->error();
    include 
    'views_error.php';
    }
    }

    }
    la pagina model sarà più o meno così:

    Codice PHP:
    <?php
    // posso includere una classe per l interazione con il database

    class Model {
    public function 
    mostra($utente){
    $query $this->mysqli->query("SELECT * FROM utenti WHERE username = '$utente'");
    $riga $query->fetch_object();

    }
    }
    ?>
    e la vista sarà cosi
    Codice PHP:
    <html>
    <head>
    </head>
    <body>
    <p><?php echo $riga->username;?></p>
    </body>
    </html>
    Una volta visto l'impostazione mi servirebbe capire:
    1) Ho capito correttamente il funzionamento del pattern? o sbaglio e confondo le varie funzionalità?
    2) Non mi è ancora chiarissima la funzionalità del controller... cioè per ogni azione che voglio svolgere ci dovrà essere un metodo nel controller che carica una determinata vista e applica un metodo del model?

    Spero di essermi spiegato bene! in caso contrario mi scuso in anticipo!
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Proprio nessuno raga?

  3. #3
    guarda tra i miei messaggi che ho scritto, ho già risposto a queste domande per un altro utente
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Ho guardato qualche tutorial...
    Volevo capire se è necessario rispettare la struttura delle url
    Public/controller/metodo/parametro1/
    ??

  6. #6
    dipende da come decidi di gestire le richieste..

    se programmi il front-controller per gestire richieste diverse dal solito: index.php/modulo/azione/parametri puoi strutturare la tua applicazione in modo diverso

    cosa vorresti fare?
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Fai conto che sono agli inizi con mvc e voglio solamente mostrare una pagina personale di un utente come ho descritto nell esempio... Quindi ci sarà un unico parametro che sarà il nome dell utente ad esempio...
    Per capire più che altro la funzione del controller...
    se ho capito bene ogni metodo del controller genera l applicazione di un modello e della vista

  8. #8
    Pensa ad MVC come a un sistema modulare (a moduli).
    Ogni modulo è formato da un Controller, un Model (Mapper + Model) e le View
    Ogni modulo gestisce le iterazioni tra utente e db (più qualche ri-elaborazione dati).
    Ogni tabella del db avrà almeno un modulo che la gestisce.

    Oppure come fosse un'azienda
    Ogni azienda è divisa in reparti (moduli)
    Ogni reparto fa qualcosa di specifico sui prodotti
    Ogni reparto ha un responsabile (controller) degli operai (model) e produce un prodotto finito o semi-lavorato (view)

    Quindi la tua azienda ha un reparto "utenti"
    questo reparto gestisce tutte le operazioni relative agli utenti che la tua azienda è in grado di fare

    Immagina che arriva da te un cliente che vuole vedere un utente;

    arriva il cliente con il suo foglietto in mano e va in reception (front-controller)
    la reception chiede al cliente cosa vuole
    la reception dice al cliente di andare al reparto utenti (router)

    Il cliente va verso il reparto
    Il cliente consegna l'ID al responsabile (controller) del reparto utenti

    Il responsabile verifica:
    - che il foglio che l'utente ha consegnato sia scritto
    - che sia un numero
    - che sia un ID valido

    fatto questo passa il foglietto all'operaio (mapper o model) e gli dice: "recuperami i dati di ID"

    l'operaio passa i dati al responsabile
    il responsabile ti consegna la risposta.

    se ho capito bene ogni metodo del controller genera l applicazione di un modello e della vista
    non è detto, puoi avere moduli che non hanno bisogno del db e quindi niente mapper e niente model..
    ad esempio una pagina index
    Questa volta, più che un voto.. è favoreggiamento.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    158
    Tralasciando la parte del router e del front-controller posso dire che :

    in controller ci sarà un metodo control() che dirà così :

    se isset($_SESSION['id']) allora applica getDatiUtente() del modello e applica una certa vista
    altrimenti
    applica getError() del modello e carica un altra vista
    stando all'esempio dell azienda mi pare di capire che per ogni "reparto di azienda" o modulo ci dovrà essere un unico file controller ( ad esempio class ControllerUser ) , mentre ci potranno essere svariati modelli ...

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Mi accodo alla discussione

    Secondo voi dove andrebbero i file .scss compilati da php? Insieme alle altre risorse (js, fonts...) oppure "a parte"?
    No

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.