SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Sviluppo web con
        CakePHP
Andrea Chiarottino e Francesco Ronchi
             Linux Day Torino
               24-10-2009
Presentazione



Chi siamo...

Chi siete?
Perchè un framework?
 Velocità di sviluppo

 Riutilizzo del codice

 Struttura del codice

 Uso di modelli standard (MVC, ORM...)

 Codice di terze parti (community...)

 Documentazione
CakePHP (1)

Basato su PHP, ereditando idee da
altri linguaggi (vedi Ruby on Rails)

Oggetti: Modello MVC, ORM

Coding by convention

Scaffolding & Bake

Codice semplice e “pulito”
CakePHP (2)

Facile da estendere con componenti,
helper, behaviours e plugin.

Gestione della validazione

Supporto AJAX

Autenticazione e ACL

Integrazione con SimpleTest
Modello MVC

MVC = Model, View, Controller

Model: i dati dell’applicazione,
tipicamente il database.

View: la presentazione delle
informazioni, tipicamente pagine web

Controller: la logica
dell’applicazione
MVC visto da CakePHP
Struttura Cartelle

app/

cake/

vendors/

.htaccess

index.php
Struttura Cartelle:
app/   app/
•   config/

•   controllers/

•   locale/

•   models/

•   plugins/

•   tmp/

•   vendors/

•   views/

•   webroot/
App Extensions

app_model.php, app_controller.php,
app_helpers.php presenti nella
cartella app

Sono le superclassi di model, view e
controller dove trovano posto i
metodi comuni a tutte le sottoclassi
Components

Classi integrate nel FW per svolgere
compiti comuni che possono essere
utilizzate dai controller estendone
le funzionalità

Core Components: ACL, Auth, Cookie,
Email, RequestHandler, Security,
Session
Behaviors


Classi che estendono le funzionalità
dei model

Core behaviors: ACL, Containable,
Translate, Tree
Helpers

Classi che includono logica per il
livello presentazione che possono
essere riutilizzate nelle view

Core helpers: AJAX, Cache, Form,
Javascript, Number, Paginator, RSS,
Session, Text, Time, XML
Common Tasks
Validazione   e sanitization dei dati

Gestione errori e debugging

Caching e Logging

Testing

I18n & L10n

REST
Utility libs


Classi con funzioni di utilizzo
generale richiamabili all'interno
dell'applicazione

Core Libs: Inflector, String, Xml,
Set, Security, Cache, HttpSocket
Console Apps


BAKE: script per la generazione di
codice: models, views, controllers

Possibilità di creare template da
utilizzare per generare elementi
dell'applicazione personalizzati
Scaffolding & Bake


Creazione dinamica del CRUD delle
tabelle del database (Scaffolding)

Creazione statica delle classi HTML e
dei controller (Bake)
Ambiente di sviluppo
Eclipse

•   PDT per sviluppare in PHP

•   Subclipse per collegamenti a repository
    SVN

Firefox

•   Firebug

•   Web developer bar

Apache (con Mod Rewrite)

MySQL
Let's go code!



Pratica con Cake: esempio
Struttura DB
Code by Convention

Definire una convenzione per fare le
cose, anziché configurarle

Codice più semplice/leggibile, più
leggero e più standard

Configurazione sempre disponibile per
esigenze particolari
Convenzioni per il DB

 Regole principali:

   Nomi delle tabelle al plurale (in
   inglese)

   Chiave primaria campo ‘id’

   Chiavi esterne con nome della
   tabella al singolare + ‘_id’
Convenzioni per model

 Regole principali:

   Nomi delle classi singolari,
   CamelCased: Person, Apple,
   BigPerson

   Nomi dei file separati da _ se
   composti di più parole:
   person.php, apple.php,
   big_person.php
Convenzioni per
      controller
Regole principali:

  Nomi delle classi plurali,
  CamelCased e terminanti con
  Controller: PersonController,
  BigPersonController

  Nomi dei file separati da _ se
  composti di più parole:
  person_controller.php,
  big_person_controller.php
Convenzioni per view
Regole principali:

  Le view sono contenute in una
  cartella all'interno di una
  tabella che ha il nome del
  controller

  Ciascuna view è un file che ha il
  nome di un metodo (action) del
  controller separato da _ se
  contiene più parole
CakePHP URL


...siteurl/controllername/actionname/par1
/par2

Si possono comunque personalizzare gli
URL utilizzando le route
Risorse
Website: http://www.cakephp.org

Cookbook: http://book.cakephp.org

Bakery: http://bakery.cakephp.org

API: http://api.cakephp.org

CakeForge: http://www.cakeforge.org

Test Cases:
http://api.cakephp.org/tests

Google Group:
http://groups.google.com/group/cake-
php
Libri

Apress – Beginning CakePHP from Novice
 to Professional (Pag. 341)

Apress - CAKEPHP - Practical CakePHP
 Projects (Pag. 389)

Packt – Publishing CakePHP Application
 Development (Pag. 328)

Tutorial redatti da IBM visibili anche
 su scribd.
Grazie!!!
Andrea Chiarottino e Francesco Ronchi

           contacts@crop.it
         http://www.crop.it

Mais conteúdo relacionado

Semelhante a CakePhp Linux Day Torino '09

Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxGiovanni Cappellini
 
Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)brossi676
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSMAU
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Link. php [santi caltabiano]
  Link. php [santi caltabiano]  Link. php [santi caltabiano]
Link. php [santi caltabiano]santi caltabiano
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulLuca Milan
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroAndrea Dottor
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfrescoMirco Leo
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIAdiodorato
 

Semelhante a CakePhp Linux Day Torino '09 (20)

Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
Laravel Framework PHP
Laravel Framework PHPLaravel Framework PHP
Laravel Framework PHP
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del cero
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Link. php [santi caltabiano]
  Link. php [santi caltabiano]  Link. php [santi caltabiano]
Link. php [santi caltabiano]
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTful
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
EIP with Apache Camel
EIP with Apache CamelEIP with Apache Camel
EIP with Apache Camel
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 

Mais de Francesco Ronchi

Chi ha paura dell'AI? - @reelations
Chi ha paura dell'AI? - @reelationsChi ha paura dell'AI? - @reelations
Chi ha paura dell'AI? - @reelationsFrancesco Ronchi
 
AI Work Revolution - #TDD2023
AI Work Revolution - #TDD2023 AI Work Revolution - #TDD2023
AI Work Revolution - #TDD2023 Francesco Ronchi
 
Droidcon Italy 2020 report
Droidcon Italy 2020 report Droidcon Italy 2020 report
Droidcon Italy 2020 report Francesco Ronchi
 
Swift heroes digital 2020 - post event report
Swift heroes digital 2020 - post event reportSwift heroes digital 2020 - post event report
Swift heroes digital 2020 - post event reportFrancesco Ronchi
 
Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019
Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019
Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019Francesco Ronchi
 
Presentazione Linkedin - Torino Digital Days
Presentazione Linkedin - Torino Digital DaysPresentazione Linkedin - Torino Digital Days
Presentazione Linkedin - Torino Digital DaysFrancesco Ronchi
 
Presentazione GrowItApp (v1.0)
Presentazione GrowItApp (v1.0)Presentazione GrowItApp (v1.0)
Presentazione GrowItApp (v1.0)Francesco Ronchi
 
Synesthesia & GrowItApp @ b-appexpo.it 2016
Synesthesia & GrowItApp @ b-appexpo.it 2016Synesthesia & GrowItApp @ b-appexpo.it 2016
Synesthesia & GrowItApp @ b-appexpo.it 2016Francesco Ronchi
 
Lo Zen e l'arte dello UX Design Mobile - festival ICT 2015 - Synesthesia
Lo Zen e l'arte dello UX Design Mobile -  festival ICT 2015 - SynesthesiaLo Zen e l'arte dello UX Design Mobile -  festival ICT 2015 - Synesthesia
Lo Zen e l'arte dello UX Design Mobile - festival ICT 2015 - SynesthesiaFrancesco Ronchi
 
Report Droidcon Italy 2014
Report Droidcon Italy 2014Report Droidcon Italy 2014
Report Droidcon Italy 2014Francesco Ronchi
 
Droidcon 2014 Italy - Opening Welcome
Droidcon 2014 Italy - Opening WelcomeDroidcon 2014 Italy - Opening Welcome
Droidcon 2014 Italy - Opening WelcomeFrancesco Ronchi
 
Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?Francesco Ronchi
 
Mobile Marketing & Apps @ Digital festival 2013
Mobile Marketing & Apps @ Digital festival 2013Mobile Marketing & Apps @ Digital festival 2013
Mobile Marketing & Apps @ Digital festival 2013Francesco Ronchi
 
Mobile marketing - Italia 2013
Mobile marketing - Italia 2013Mobile marketing - Italia 2013
Mobile marketing - Italia 2013Francesco Ronchi
 
Realtà Aumentata - Techno Pitch
Realtà Aumentata - Techno PitchRealtà Aumentata - Techno Pitch
Realtà Aumentata - Techno PitchFrancesco Ronchi
 
My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012Francesco Ronchi
 
Google Play (Android Market) visto da sviluppatore
Google Play (Android Market) visto da sviluppatoreGoogle Play (Android Market) visto da sviluppatore
Google Play (Android Market) visto da sviluppatoreFrancesco Ronchi
 
Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)Francesco Ronchi
 

Mais de Francesco Ronchi (19)

Chi ha paura dell'AI? - @reelations
Chi ha paura dell'AI? - @reelationsChi ha paura dell'AI? - @reelations
Chi ha paura dell'AI? - @reelations
 
AI Work Revolution - #TDD2023
AI Work Revolution - #TDD2023 AI Work Revolution - #TDD2023
AI Work Revolution - #TDD2023
 
Marketing&Privacy
Marketing&PrivacyMarketing&Privacy
Marketing&Privacy
 
Droidcon Italy 2020 report
Droidcon Italy 2020 report Droidcon Italy 2020 report
Droidcon Italy 2020 report
 
Swift heroes digital 2020 - post event report
Swift heroes digital 2020 - post event reportSwift heroes digital 2020 - post event report
Swift heroes digital 2020 - post event report
 
Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019
Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019
Presentazione Linkedin All Star - Autocrocetta 13 Giugno 2019
 
Presentazione Linkedin - Torino Digital Days
Presentazione Linkedin - Torino Digital DaysPresentazione Linkedin - Torino Digital Days
Presentazione Linkedin - Torino Digital Days
 
Presentazione GrowItApp (v1.0)
Presentazione GrowItApp (v1.0)Presentazione GrowItApp (v1.0)
Presentazione GrowItApp (v1.0)
 
Synesthesia & GrowItApp @ b-appexpo.it 2016
Synesthesia & GrowItApp @ b-appexpo.it 2016Synesthesia & GrowItApp @ b-appexpo.it 2016
Synesthesia & GrowItApp @ b-appexpo.it 2016
 
Lo Zen e l'arte dello UX Design Mobile - festival ICT 2015 - Synesthesia
Lo Zen e l'arte dello UX Design Mobile -  festival ICT 2015 - SynesthesiaLo Zen e l'arte dello UX Design Mobile -  festival ICT 2015 - Synesthesia
Lo Zen e l'arte dello UX Design Mobile - festival ICT 2015 - Synesthesia
 
Report Droidcon Italy 2014
Report Droidcon Italy 2014Report Droidcon Italy 2014
Report Droidcon Italy 2014
 
Droidcon 2014 Italy - Opening Welcome
Droidcon 2014 Italy - Opening WelcomeDroidcon 2014 Italy - Opening Welcome
Droidcon 2014 Italy - Opening Welcome
 
Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?Mobile App o Mobile Web? Quale scelta per il mio business?
Mobile App o Mobile Web? Quale scelta per il mio business?
 
Mobile Marketing & Apps @ Digital festival 2013
Mobile Marketing & Apps @ Digital festival 2013Mobile Marketing & Apps @ Digital festival 2013
Mobile Marketing & Apps @ Digital festival 2013
 
Mobile marketing - Italia 2013
Mobile marketing - Italia 2013Mobile marketing - Italia 2013
Mobile marketing - Italia 2013
 
Realtà Aumentata - Techno Pitch
Realtà Aumentata - Techno PitchRealtà Aumentata - Techno Pitch
Realtà Aumentata - Techno Pitch
 
My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012
 
Google Play (Android Market) visto da sviluppatore
Google Play (Android Market) visto da sviluppatoreGoogle Play (Android Market) visto da sviluppatore
Google Play (Android Market) visto da sviluppatore
 
Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)
 

CakePhp Linux Day Torino '09

  • 1. Sviluppo web con CakePHP Andrea Chiarottino e Francesco Ronchi Linux Day Torino 24-10-2009
  • 3. Perchè un framework? Velocità di sviluppo Riutilizzo del codice Struttura del codice Uso di modelli standard (MVC, ORM...) Codice di terze parti (community...) Documentazione
  • 4. CakePHP (1) Basato su PHP, ereditando idee da altri linguaggi (vedi Ruby on Rails) Oggetti: Modello MVC, ORM Coding by convention Scaffolding & Bake Codice semplice e “pulito”
  • 5. CakePHP (2) Facile da estendere con componenti, helper, behaviours e plugin. Gestione della validazione Supporto AJAX Autenticazione e ACL Integrazione con SimpleTest
  • 6. Modello MVC MVC = Model, View, Controller Model: i dati dell’applicazione, tipicamente il database. View: la presentazione delle informazioni, tipicamente pagine web Controller: la logica dell’applicazione
  • 7. MVC visto da CakePHP
  • 9. Struttura Cartelle: app/ app/ • config/ • controllers/ • locale/ • models/ • plugins/ • tmp/ • vendors/ • views/ • webroot/
  • 10. App Extensions app_model.php, app_controller.php, app_helpers.php presenti nella cartella app Sono le superclassi di model, view e controller dove trovano posto i metodi comuni a tutte le sottoclassi
  • 11. Components Classi integrate nel FW per svolgere compiti comuni che possono essere utilizzate dai controller estendone le funzionalità Core Components: ACL, Auth, Cookie, Email, RequestHandler, Security, Session
  • 12. Behaviors Classi che estendono le funzionalità dei model Core behaviors: ACL, Containable, Translate, Tree
  • 13. Helpers Classi che includono logica per il livello presentazione che possono essere riutilizzate nelle view Core helpers: AJAX, Cache, Form, Javascript, Number, Paginator, RSS, Session, Text, Time, XML
  • 14. Common Tasks Validazione e sanitization dei dati Gestione errori e debugging Caching e Logging Testing I18n & L10n REST
  • 15. Utility libs Classi con funzioni di utilizzo generale richiamabili all'interno dell'applicazione Core Libs: Inflector, String, Xml, Set, Security, Cache, HttpSocket
  • 16. Console Apps BAKE: script per la generazione di codice: models, views, controllers Possibilità di creare template da utilizzare per generare elementi dell'applicazione personalizzati
  • 17. Scaffolding & Bake Creazione dinamica del CRUD delle tabelle del database (Scaffolding) Creazione statica delle classi HTML e dei controller (Bake)
  • 18. Ambiente di sviluppo Eclipse • PDT per sviluppare in PHP • Subclipse per collegamenti a repository SVN Firefox • Firebug • Web developer bar Apache (con Mod Rewrite) MySQL
  • 19. Let's go code! Pratica con Cake: esempio
  • 21. Code by Convention Definire una convenzione per fare le cose, anziché configurarle Codice più semplice/leggibile, più leggero e più standard Configurazione sempre disponibile per esigenze particolari
  • 22. Convenzioni per il DB Regole principali: Nomi delle tabelle al plurale (in inglese) Chiave primaria campo ‘id’ Chiavi esterne con nome della tabella al singolare + ‘_id’
  • 23. Convenzioni per model Regole principali: Nomi delle classi singolari, CamelCased: Person, Apple, BigPerson Nomi dei file separati da _ se composti di più parole: person.php, apple.php, big_person.php
  • 24. Convenzioni per controller Regole principali: Nomi delle classi plurali, CamelCased e terminanti con Controller: PersonController, BigPersonController Nomi dei file separati da _ se composti di più parole: person_controller.php, big_person_controller.php
  • 25. Convenzioni per view Regole principali: Le view sono contenute in una cartella all'interno di una tabella che ha il nome del controller Ciascuna view è un file che ha il nome di un metodo (action) del controller separato da _ se contiene più parole
  • 26. CakePHP URL ...siteurl/controllername/actionname/par1 /par2 Si possono comunque personalizzare gli URL utilizzando le route
  • 27. Risorse Website: http://www.cakephp.org Cookbook: http://book.cakephp.org Bakery: http://bakery.cakephp.org API: http://api.cakephp.org CakeForge: http://www.cakeforge.org Test Cases: http://api.cakephp.org/tests Google Group: http://groups.google.com/group/cake- php
  • 28. Libri Apress – Beginning CakePHP from Novice to Professional (Pag. 341) Apress - CAKEPHP - Practical CakePHP Projects (Pag. 389) Packt – Publishing CakePHP Application Development (Pag. 328) Tutorial redatti da IBM visibili anche su scribd.
  • 29. Grazie!!! Andrea Chiarottino e Francesco Ronchi contacts@crop.it http://www.crop.it