PHP: Programmazione con pattern MVC – Il Controller

04 May 2019 | M.A.D.R.

Programmazione con l’utilizzo del Pattern MVC (model, view, controller), la corretta via per fare buon WEB.

Salve siamo giunti alla “C" del pattern MVC, ossia al controller, richiamiamo alcuni aspetti fondamentali di questa tipologia di strutturazione del codice::

  1. Model – Gestisce tutta la logica dei dati, ossia le operazioni basilari CRUD (e non solo)
  2. View – Presentazione dei dati, offrendo una o più visualizzazione per risorsa
  3. Controller – Gestisce le chiamate in ingresso e in uscita, solitamente è/sono una o più classi che gestiscono l’interazione con i Model e le View.

Possiamo quindi riassumere che il nostro Controller altro non è che l’attore principale che gestisce le chiamate dal nostro route, con almeno una chiamata alla View per rendere visibile all’utente l’elaborazione. Questa tipologia di design rappresenta effettivamente la volontà da parte degli sviluppatori di separare le diverse logiche Business dal’interazione con la base dati e le viste, questo permette al nostro Controller di essere quasi un Supervisore.

Vediamo il flusso di attività del nostro Controller che viene attivato per primo:

Notiamo subito che il client effettuando una connessione sul nostro server attiverà un Dispatcher (route), ossia una classe adibita allo smistamento delle chiamate in entrata ed in uscita, che a sua volta invocherà il Controller e così via… Seppur questa soluzione sarebbe la miglior strada da intraprendere, potremmo avere dei problemi agli inizia di questa avventura, quindi un consiglio, prima di iniziare ad utilizzare qualsiasi framework, è quello di capire bene e testare di prima mano il concetto, cercando di separare al massimo i concetti espressi.

Potremmo fare l’esempio di un mini sito con 4 paginette come abbiamo visto nell’uso di un sistema di templating, ampliando il concetto in questo modo:

  • root
    • controller
      • CHome.php
      • CChisiamo.php
      • CContatti.php
    • model
      • MHome.php
      • MChisiamo.php
      • MContatti.php
    • view
      • home.tpl
      • chisiamo.tpl
      • contatti.tpl
  • index.php
  • route.php

L’idea è quella di far interpretare alla nostra Classe route.php, la richiesta e richiamare il nostro controller il quale avrà tutta la logica per reperire i dati e mostrare al Client (utente connesso) la vista adeguata; semplificando al massimo potremmo avere una chiamata di questo genere:

https://www.sito.t/index.php?c=home

Utilizzo i parametri espliciti per semplificare la comprensione. La nostra rotta indica che vogliamo visualizzare la home identificando attraverso il parametro “c" (arbitrario) il controller che dobbiamo attivare, in questo caso CHome.php.

Quindi route chiamerà CHome.php attivando il metodo index(), che avrà tutta la logica per la presentazione dei dati.

Un piccolo, ma raffinato miglioramento, potrebbe essere quello di richiamare un determinato metodo in questo modo:

https://www.sito.t/index.php?c=home/get_my_home

Ossia dobbiamo chiamare il Controller CHome.php e richiamare il metodo get_my_home.

Buon lavoro a tutti.

Soluzioni complete per ogni esigenza