14. HTML
Linguaggio di markup
Annotation & Presentation Semantic
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Html</title>
</head>
<body>
<h1 id=“header”>HTML</h1>
<div class=“slide”>
<h2>Linguaggio di markup</h2>
<p>Annotation & presentation semantic</p>
</div>
</body>
</html>
15. HTML
Document Type Declaration
Attributi
Entità
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Html</title>
</head>
<body>
<h1 id=“header”>HTML</h1>
<div class=“slide”>
<h2>Linguaggio di markup</h2>
<p>Annotation & presentation semantic</p>
</div>
</body>
</html>
50. Spaghetti Code
Devo realizzare il blog
Preparo l’html necessario
Introduco le interrogazioni al database
Realizzo la gestione degli inserimenti
==
Una pagina di codice per realizzare il blog
52. Spaghetti Code
Pro
Veloce da scrivere
Veloce da eseguire
Contro
Scarsa manutenibilità
Scarsa espressività
Difficile riuso del codice
Impossibile il Testing
60. Refactoring MVC
Modello gestisce il comportamento e i dati del
dominio applicativo, risponde a richieste di
informazioni di stato e a istruzioni di cambio
di stato.
Vista traduce le informazioni ottenute dal
modello in un formato adatto all'interazione.
Controller serve a coordinare il processo di
interazione: riceve gli input dell'utente e
scatena le chiamate verso gli oggetti del
modello, per poi passare alla vista il
necessario a fornire l'output corretto.
63. Refactoring MVC
Pro
Riusabilità del codice
Astrazione dei dati
Ordine
Contro
Numero di file
Codice da scrivere
Pattern architetturale da implementare
71. Approccio Naive
Devo realizzare il blog
Preparo l’html necessario
Introduco le interrogazioni al database
Realizzo la gestione degli inserimenti
==
Una pagina di codice per realizzare il blog
www.flickr.com/photos/lrargerich/3187525211
79. Symfony
Web Application Framework per progetti PHP
Setup semplice
Design “pulito”
Tools di Testing, Debugging, Documentazione
Generatori automatici di codice
Gratuito e licenziato MIT
Symfony 1 (1.4)
Symfony 2
81. Setup
Si scarica il Framework o si clona
dall’SVN
Si genera un nuovo progetto con gli
strumenti CLI messi a disposizione
$ php lib/vendor/symfony/data/bin/symfony
generate:project webprog-symfony
$ php symfony generate:app frontend
Si configura il webserver per puntare
alla catella pubblica “web”
83. Cartella Web
Contiente i Front
Controller per
ciascuna
applicazione
Contiene le
risorse pubbliche
del sito
84. Cartella Apps
Contiente le applicazioni web che insistono
sul modello di riferimento
Ogni applicazione contiene le configurazioni
(e.g. routing) e tutti i Controller
85. Cartella Config
Configurazione del progetto
Configurazione di accesso al database
Schema dei dati per l’ORM
86. Creazione del modello
Grazie all’ORM a partire dalla descrizione dello schema il
modello e la persistenza verranno generati automaticamente
$ php symfony doctrine:build –model
$ php symfony doctrine:build --sql
87. Creazione di un modulo
Un modulo suddivide l’applicazione per
“funzionalità”
Per introdurre la funzionalità di gestione dei
nostri messaggi creiamo il modulo “message”
$ php symfony doctrine:generate-module frontend
message Message
91. Generazione di Codice
L’Admin-Generator è lo strumento
fondamentale per il RAD
Permette la creazione di un pannello
di amministrazione dal Modello dei
dati
$ php symfony generate:app admin
$ php symfony doctrine:generate-admin admin
Message --module=message
93. Hands on MVC
Mastering the Web
Grazie
Michele Capra Claudio Gandelli
michele@orangecode.it claudio@bitcandies.com
twitter: @piccoloaiutante twitter: @cgandelli
www.flickr.com/photos/donbuciak/3151055123