Blogial

« Post precedente

Post successivo »


Semplice User Manager con il Model View Controller - View -

Metti al top

La view, è in sostanza, il risultato finale che viene spedito al browser (ad esempio l'xhtml), per mezzo del controller.

Quando si parla delle views molta gente pensa ai templates ma non necessariamente, dobbiamo utilizzare un complesso template engine tipo Smarty per raggiugere il ns. scopo, che è quello di fornire una interfaccia alla ns. applicazione.

Sull'opportunità dell'uso dei templates engine si sono accese molte discussioni, rimando il lettore all'articolo PHP and Templates, in cui sono analizzati i vari pro e contra del loro utilizzo.

User Page
Codice php:
class UserPage{
	private $title= '';
	private $xhtml= '';
	public function __construct($title,UserView $view){
		$this->setTitle($title);
		$this->buildHeader();
		$this->buildView($view);
		$this->buildFooter();
	}
	private function setTitle($title){
		$this->title= ' User Manager '.$title;
	}
	private function buildHeader(){
		$this->xhtml=<<<EOD 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it" dir="ltr">
<head>
<title>{$this->title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="image/ico" rel="shortcut icon" href="favicon/favicon.ico" />
<link type="text/css" rel="stylesheet" href="css/user-manager.css" />
<script type="text/javascript" src="js/user-manager.js"></script>
</head>
<body>
<div id="container">
<div id="header"><h1>User Manager</h1></div>
<div id="user-manager">
EOD;
	}
	public function buildView($view){
		$this->xhtml.= $view->getView();
	}
	private function buildFooter(){
		$this->xhtml.=<<<EOD
</div>
<div id="footer"><p>www.blogial.net</p></div>
</div>
</body>
</html>
EOD;
	}
	public function getXhtml(){
		return $this->xhtml;
	}
	final public function __destruct(){
		unset($this->xhtml);
	}
}

Possiamo definire la classe UserPage, il contenitore delle varie views dello script, ve la presento:

Ho utilizzato la sintassi per le stringhe Heredoc per evitare l'escape delle numerose virgolette.

L'unica cosa degna di nota è, il metodo buildView che ha come parametro un oggetto di tipo UserView, con il quale attraverso il metodo getView aggiungo l'xhtml dei vari moduli al template della pagina.

Ho preferito dotare la classe di un __destruct che verrà chiamato ogni qualvolta il garbage collector di PHP distruggerà l'oggetto, in questo modo avremo una migliore gestione della memoria.

UserView
Codice php:
abstract class UserView{
	protected $xhtml= '';
	abstract protected function setView();
	public function getView(){
		return $this->xhtml;
	}
}

La classe UserView farà da modello, a tutte le views dei moduli obbligandoli a implementare concretamente il metodo setView.

Conclusioni

Con un semplice template (UserPage) e una serie di views ho dotato la ns. applicazione di una gradevole interfaccia flessibile e completamente modificabile (nello script naturalmente avremo anche un file css)senza ricorrere a complicati template engine.Consiglio per un approfondimento la lettura degli articoli Building Object Oriented Web Pages e Completing a Web Site Template using Inheritance.

Nel prossimo articolo parlerò del Model.

Commenti

  1. [1]

    Ti consiglio di usare uno strumento per la gestione dei template (esempio smarty). La soluzione da te proposta non mi pare troppo MVC

  2. [2]

    Grazie del commento ;) il primo ! Riguardo smarty ti invito a leggere i links che ho segnalato che riflettono la mia opinione in merito a questo template engine. La mia soluzione vuole essere una alternativa ai template engine (ad esempio il presente blog è sviluppato utilizzando i widgets) e sinceramente non vedo il motivo per cui non la ritieni MVC.

Inserisci il tuo commento

Inserisci il codice che leggi nell'immagine

antispam

Nb.
Devi avere i cookie abilitati per commentare l'articolo.
I commenti saranno soggetti ad approvazione da parte dell'administrator.

Gli articoli in evidenza

Php Trouble Tickets

Metti al top

Script opensource php mysql per la gestione delle richieste degli utenti tramite ticket.

Si tratta di un software gratuito che gira su piattaforme Linux, Windows (Apache).

Permette la completa gestione dei rapporti commerciali, tra voi e i vostri clienti, attraverso il sistema basato sui trouble tickets.

Distribuito sotto licenza MIT ha le seguenti caratteristiche:

  • - Valid css e xhtml strict;
  • - unobtrusive javascript utilizzando il framework jQuery;
  • - multilanguages;
  • - aggiungi/edita/cancella/chiudi/assegna trouble tickets e risposte;
  • - nessuna limitazione sul numero di utenti, amministratori e staff di supporto;
  • - permessi agli operatori, accesso separato utenti;
  • - gruppi di operatori con gestione permessi (CRUD);
  • - illimitate e nested categories;
  • - paging;
  • - moduli di ricerca;
  • - tables sortable;
  • - nessun limite sul numero di TT creabili.

Potete visionare una demo qui.