PHP, non lo stesso vecchio linguaggio
Upcoming SlideShare
Loading in...5
×
 

PHP, non lo stesso vecchio linguaggio

on

  • 951 views

La mia presentazione sull'evoluzione di PHP al Codemotion 2013 a Roma

La mia presentazione sull'evoluzione di PHP al Codemotion 2013 a Roma

Statistics

Views

Total Views
951
Views on SlideShare
679
Embed Views
272

Actions

Likes
4
Downloads
5
Comments
1

3 Embeds 272

http://roma.grusp.org 267
https://twitter.com 4
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Il Codemotion Roma è stato davvero grandioso, per chi si fosse perso il mio talk 'Best Practices Mobile Web' il link con tutte le slide è questo: http://www.slideshare.net/LucaDegliEsposti/il-tap-e-il-nuovo-click
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PHP, non lo stesso vecchio linguaggio PHP, non lo stesso vecchio linguaggio Presentation Transcript

  • Massimiliano Arione non lo stesso vecchio linguaggio
  • aboutuna breve introduzione su di me: sviluppatore web da oltre un decennio, membro delGrUSP, presidente del PUG Roma, co-autore del libro PHP Best Practices.
  • PHP...questa immagine un po’ scherzosa rappresenta la visione che hanno degli sviluppatori PHP glisviluppatori 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?
  • spaghetti codeil motivo è che, dalla sua nascita e per almeno un lustro, PHP è stato il linguaggio per eccellenza dellospaghetti code. Chiunque riuscisse nella non difficile impresa di installare Apache e Mysql, si trovava amaneggiare esempi presi qua e là e a implementare siti dinamici, senza alcuna organizzazione del codice
  • spaghetti codeecco un breve esempio, uno preso a caso dalla rete, di come si possa scrivere cattivo codice in PHP (edi come lo sia stato fatto effettivamente per molto tempo)
  • le origini<FORM ACTION="/cgi-bin/php.cgi/~userid/display.html"METHOD=POST><INPUT TYPE="text" name="name"><INPUT TYPE="text" name="age"><INPUT TYPE="submit"></FORM><? if($age>50); echo "Hi $name, you are ancient!<p>"; elseif($age>30); echo "Hi $name, you are very old!<p>"; else; echo "Hi $name."; endif;> in origine, PHP fu creato come un semplice strumento per iniettare valori dinamici nei form. Si chiamava PHP/FI, che stava per Personal Home Page/Form Injector, con un gioco di parole ricavato da TCP/IP. Questo esempio è ricavato direttamente dal manuale della versione 2.0 (parliamo del 1997)
  • le origini classi oggetti patternquindi niente classi, niente oggetti, niente pattern! "pattern" probabilmente era una parolasconosciuta al 99% degli sviluppatori
  • ma poi...fin qui abbiamo visto che il linguaggio effettivamente poneva dei seri limiti alle pratiche della buonaprogrammazione. Ma poi, un bel giorno (parliamo del 2004/2005), è uscito PHP5: e finalmente abbiamovisto un supporto alla OOP sempre maggiore.
  • e gli sviluppatori?e gli sviluppatori? Sono rimasti gli stessi di quello spaghetti code visto allinizio o si sono evoluti insiemeal linguaggio?
  • i problemiquali sono i problemi principali rimasti negli sviluppatori PHP?
  • i problemi NIHantipattern Not Invented Here. Quante volte ho visto, per esempio sui forum, sviluppatori chiedere aiutoper sviluppare funzionalità come invio di email o autenticazine... Nonostante ci siano sempre statesoluzioni pronte e a portata di mano, molti preferiscono risolvere di nuovo problemi che sono stati risolticentinaia di volte
  • i problemiantipattern del coltellino svizzero. Implementare una mega-classe che fa un sacco di cose diverse,magari lunga 1000 righe.
  • lo scopofacciamo una piccola parentesi: io, come sviluppatore PHP, che cosa voglio?
  • lo scopo 1. divertimentoPrima di tutto vorrei divertirmi mentre scrivo codice. O perlomeno non annoiarmi.
  • lo scopo 2. qualitàE poi vorrei scrivere codice di qualità, in modo da soddisfare anche i miei clienti. Perché in fondo conPHP ci devo vivere.
  • le soluzioniCome fare quindi per raggiungere i miei scopi, evitando contemporaneamente i problemi a cui abbiamoaccennato?
  • le soluzionipattern: non reinventare la ruota. Al contrario di NIH, devo usare delle classi già pronte, cheimplementano la funzionalità che mi serve (e possibilmente solo quella)
  • le soluzionipattern: dont repeat yourself (DRY). Questo è un po come il precedente, ma applicato a sé stessi. Sesto duplicando una funzioalità, devo rifattorizzare e spostare in unaltra classe (o simile).
  • le soluzionipattern: SRP (Single Responsiblity Principle). Al contrrario del coltellino svizzero, devo avere tantisingoli strumenti, ciascuno dei quali fa una cosa sola, e la fa bene.
  • lattuale ecosistemavediamo cosa offre lattuale ecosistema di PHP
  • lattuale ecosistemaquasi tutti i progetti importanti, incluso il sorgente di PHP stesso, sono su github. Questo vuol direestrema facilità nel collaborare e nel contribuire.
  • lattuale ecosistemaPHP, da pochissimo, dispone di un eccellente sistema di gestione delle dipendenze, ispirato dal gestoredi pacchetti di suse, che disponse di un SAT (soddisfacibilità booleana)
  • lattuale ecosistemacollaborazione. Varie realtà si sono unite in uno sforzo comune, dando vita al progetto FIG (FrameworkInteroperability Group), per assicurare degli standard comuni. Questo vuol dire maggiore facilità nel farinteragire librerie di progetti diversi
  • lattuale ecosistematest automatici. Questa è una parte veramente molto importante, per assicurare sia la qualità al clienteche la tranquillità allo sviluppatore.
  • lattuale ecosistemaci sono quindi un sacco di librerie o di progetti interessanti oggi, scritti in PHP
  • ma anche...ma, attenzione, ce ne sono ancora altri che sono rimasti indietro
  • domande ?
  • creditshttp://www.mulaz.org/spam/wp-content/uploads/2009/12/pG3q7.jpghttp://sourcemaking.com/files/sm/images/spagett.jpghttp://inliniac.files.wordpress.com/2009/01/20090115-msc-sguil-code.pnghttp://www.php.net/manual/phpfi2.php#startinghttp://static.blogo.it/ossblog/go_php5.pnghttp://images.wikia.com/nonciclopedia/images/archive/8/80/20110124225729!Swiss-army-knife.jpghttp://cdn.androidpolice.com/wp-content/uploads/2013/02/nexusae0_image59.pnghttp://www.planetgeek.ch/wp-content/uploads/2010/06/image1.pnghttp://brandhabits.files.wordpress.com/2010/06/reinventing-the-wheel.jpghttp://mordor.digitaldarkness.com/phing/images/dont_repeat.jpghttp://www.jaspermorrison.com/images/projects/tableware_kfs.jpghttp://blog.indeed.it/wp-content/uploads/2012/05/graph-atd-full1.pnghttp://attosoft.info/images/mascot/elephpant.pnghttp://octodex.github.com/images/socialite.jpghttp://getcomposer.org/img/logo-composer-transparent.pnghttp://blog.twelvecode.com/wp-content/uploads/2012/06/php_fig-620x300.pnghttp://2.bp.blogspot.com/-sB1-dhxwx5c/T5MonNLbzVI/AAAAAAAAAKo/KG-cL8ZxO6k/s1600/PHPUnit-logo.jpghttp://symfony.com/logohttp://framework.zend.com/participate/logoshttp://buby.it/var/ezflow_site/storage/images/media/images/ez-publish-logo/611-1-ita-IT/eZ-Publish-Logo.pnghttps://github.com/laravelhttp://symfony.com/uploads/assets/doctrine/logo.pnghttp://www.seoperseo.it/wp-content/uploads/2010/09/joomlapng.pnghttp://wordpress.org/about/logos/http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png