SlideShare a Scribd company logo

Sviluppo rapido di applicazioni con PHP

la mia presentazione all'evento PHP.TO.START 2011

1 of 14
Download to read offline
[object Object],[object Object],[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]

Recommended

Perché WordPress? WordCamp Catania 2019
Perché WordPress? WordCamp Catania 2019 Perché WordPress? WordCamp Catania 2019
Perché WordPress? WordCamp Catania 2019 Cristiano Zanca
 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGiuliano Iacobelli
 
Sitografia ricerca di mercato per l’estero
Sitografia ricerca di mercato per l’esteroSitografia ricerca di mercato per l’estero
Sitografia ricerca di mercato per l’esteroRita Bonucchi
 
Fluid powered TYPO3
Fluid powered TYPO3Fluid powered TYPO3
Fluid powered TYPO3gammsystem
 
Fluid Powered TYPO3
Fluid Powered TYPO3Fluid Powered TYPO3
Fluid Powered TYPO3gammsystem
 
La ricerca on line corso cesvip ok
La ricerca on line   corso cesvip okLa ricerca on line   corso cesvip ok
La ricerca on line corso cesvip okMaria Luisa Merenda
 
PRINCIPI DI BASE PER LA RICERCA ON LINE_CORSO CESVIP_ADDETTI CAMELOT + ARCHEO...
PRINCIPI DI BASE PER LA RICERCA ON LINE_CORSO CESVIP_ADDETTI CAMELOT + ARCHEO...PRINCIPI DI BASE PER LA RICERCA ON LINE_CORSO CESVIP_ADDETTI CAMELOT + ARCHEO...
PRINCIPI DI BASE PER LA RICERCA ON LINE_CORSO CESVIP_ADDETTI CAMELOT + ARCHEO...Maria Luisa Merenda
 

More Related Content

More from Massimiliano Arione

Typed models pug roma febbraio 2020
Typed models   pug roma febbraio 2020Typed models   pug roma febbraio 2020
Typed models pug roma febbraio 2020Massimiliano Arione
 
Disinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere feliciDisinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere feliciMassimiliano Arione
 
Scrivere e leggere log con elastic
Scrivere e leggere log con elasticScrivere e leggere log con elastic
Scrivere e leggere log con elasticMassimiliano Arione
 
Managing frontend libs in your Symfony project
Managing frontend libs in your Symfony projectManaging frontend libs in your Symfony project
Managing frontend libs in your Symfony projectMassimiliano Arione
 
Managing frontend libs in your php project
Managing frontend libs in your php projectManaging frontend libs in your php project
Managing frontend libs in your php projectMassimiliano Arione
 
Gestire librerie di frontend in php
Gestire librerie di frontend in phpGestire librerie di frontend in php
Gestire librerie di frontend in phpMassimiliano Arione
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioMassimiliano Arione
 
Gestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerGestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerMassimiliano Arione
 
Symfony: un framework per il web
Symfony: un framework per il webSymfony: un framework per il web
Symfony: un framework per il webMassimiliano Arione
 

More from Massimiliano Arione (20)

Typed models pug roma febbraio 2020
Typed models   pug roma febbraio 2020Typed models   pug roma febbraio 2020
Typed models pug roma febbraio 2020
 
Pipelines!
Pipelines! Pipelines!
Pipelines!
 
Il nostro amico Stan
Il nostro amico Stan   Il nostro amico Stan
Il nostro amico Stan
 
PSR7 - interoperabilità HTTP
PSR7 - interoperabilità HTTPPSR7 - interoperabilità HTTP
PSR7 - interoperabilità HTTP
 
Disinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere feliciDisinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere felici
 
MAGA - PUG Roma giugno 2017
MAGA - PUG Roma giugno 2017MAGA - PUG Roma giugno 2017
MAGA - PUG Roma giugno 2017
 
PHP7 e Rich Domain Model
PHP7 e Rich Domain ModelPHP7 e Rich Domain Model
PHP7 e Rich Domain Model
 
PHP on the desktop
PHP on the desktopPHP on the desktop
PHP on the desktop
 
Scrivere e leggere log con elastic
Scrivere e leggere log con elasticScrivere e leggere log con elastic
Scrivere e leggere log con elastic
 
The metrics
The metricsThe metrics
The metrics
 
Managing frontend libs in your Symfony project
Managing frontend libs in your Symfony projectManaging frontend libs in your Symfony project
Managing frontend libs in your Symfony project
 
Translating symfony docs
Translating symfony docsTranslating symfony docs
Translating symfony docs
 
Managing frontend libs in your php project
Managing frontend libs in your php projectManaging frontend libs in your php project
Managing frontend libs in your php project
 
Gestire librerie di frontend in php
Gestire librerie di frontend in phpGestire librerie di frontend in php
Gestire librerie di frontend in php
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggio
 
Gestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerGestione delle dipendenze con Composer
Gestione delle dipendenze con Composer
 
Migrare da symfony 1 a Symfony2
 Migrare da symfony 1 a Symfony2  Migrare da symfony 1 a Symfony2
Migrare da symfony 1 a Symfony2
 
Case study OmniAuto.it
Case study OmniAuto.itCase study OmniAuto.it
Case study OmniAuto.it
 
Symfony: un framework per il web
Symfony: un framework per il webSymfony: un framework per il web
Symfony: un framework per il web
 
Paypal + symfony
Paypal + symfonyPaypal + symfony
Paypal + symfony
 

Sviluppo rapido di applicazioni con PHP

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

Editor's Notes

  1. questa immagine un po’ scherzosa rappresenta la visione che hanno degli sviluppatori php gli sviluppatori di altri linguaggi più blasonati. Ovviamente si tratta di uno scherzo, ma ha un fondo di verità: perché gli sviluppatori PHP sono visti un po’ come degli script kiddies?
  2. il motivo è che, dalla sua nascita e per almeno un lustro, php è stato il linguaggio per eccellenza dello spaghetti code. Chiunque riuscisse nella non difficile impresa di installare apache e mysql, si trovava a maneggiare esempi presi qua e là e a implementare siti dinamici, senza alcuna organizzazione del codice
  3. ma php, fortunatamente si è evoluto. C'è stata una fase intermedia, in cui l'OOP era ancora mescolata a procedurale, soprattutto a causa di una mancanza strutturale al pieno supporto agli oggetti
  4. si è arrivati infine, a metà decennio scorso, al full OOP e quindi finalmente a una programmazione strutturata, con livelli separati, chiamata anche Lasagna code. Qui si è avuta finalmente l'opportunità di implementare design pattern e best practices giù usate in altri linguaggi, fino ad avere a disposizione dei framework, come ZF e symfony
  5. ma veniamo al punto della presentazione: per capire cosa sia lo sviluppo rapido dobbiamo partire dal concetto di velocità. Che cos’è la velocità? Uno sviluppatore alle prime armi, o uno sviluppatore che ancora è ancorato alle vecchie logiche procedurali, potrebbe dire “ma chi me lo fa fare di imparare i design pattern e le best practice, a smazzarmi sul TDD quando invece posso prendere i miei pezzetti di spaghetti code e tirare su un’applicazione in poco tempo?"
  6. c’è una metafora molto eloquente a riguardo: c’è una 500 (una vecchia 500) in autostrada, che accelera fino ad arrivare a 100 km/h. L’abitacolo trema, il motore è al massimo di giri e il guidatore ha proprio l’impressione di andar forte. C’è poi una Ferrari, sulla stessa autostrada e alla stessa velocità: il guidatore sente un leggero sibilo e vede il contagiri nemmeno a metà del massimo, gli sembra dunque di andar piano. Eppure le due auto viaggiano alla stessa velocità. in questa metafora, la 500 è lo sviluppatore di spaghetti code, mentre la Ferrari è, come probabilmente avrete capito, lo sviluppatore “avanzato” (velocità effettiva vs. velocità percepita)
  7. l primo problema che si trova ad affrontare lo sviluppatore di spaghetti code è l’estensibilità: non possiamo illuderci che un’applicazione sia finita il giorno in cui va online. Il mondo si evolve rapidamente e il web ancora di più, per cui dobbiamo essere in grado di aggiornare in modo facile un software esistente. Se ho impiegato un’ora a sviluppare una feature e poi me ne serviranno 4 per modificarla, è evidente che mi sarebbe convenuto svilupparla in 2 ore ma in maniera corretta. L'applicazione deve poi essere estensibile anche verticalmente, se, come ci auguriamo, avrà successo e quindi sarà usato da un numero maggiore di utenti
  8. il secondo problema è la manutenibilità: senza una corretta organizzazione del codice, diventa molto difficile sia per altri sviluppatori intervenire in parallelo, sia per lo sviluppatore stesso intervenire successivamente. Inoltre il codice “lasagna”, se scritto seonco best practice (e quindi usando test auomatici), sarà sicuramente più robusto e meno soggetto a regressioni
  9. l terzo problema è la mancanza di riusabilità: senza una corretta separazione degli ambiti, non è possibile riutilizzare codice già scritto in precedenza, ma occorrerà nel migliore dei casi fare un copia e incolla da una precedente implementazione simile e un conseguente adattamento. Per lo stesso motivo sarà più difficile usare software open già disponibile, in mancanza di un’adeguata struttura di supporto. Al contrario, un approccio come quello usato in un framework pone solamente un investimento iniziale, per studiare un codice altrui o per implementare un proprio codice. Successivamente, si potrà riusare lo stesso codice senza modifiche, oppure ampliare il codice esistente per renderlo adatto in casi più ampi.
  10. Come bonus dello sviluppo di codice lasagna, possiamo avere la generazione automatica di codice PHP. Le macchine dovrebbero servire proprio a questo, a svolgere al posto nostro compiti ripetitivi e noiosi, lasciandoci compiti specifici. Con un framework come symfony, possiamo scrivere un semplice file di configurazione, che definisce i modelli (cioè le tabelle, nel pattern Active Record), coi loro attributi e soprattutto con le loro relazioni. Con un comando da terminale, avremo generate per noi tutte le classi di base per gestire questi modelli, comprese le suddette proprietà e relazioni.
  11. Conclusione: lasagne, NON spaghetti!