PHP: Un progetto open source cresciuto insieme al web

1,108 views

Published on

PHP, i cambiamenti di un progetto cresciuto insieme al web

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,108
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PHP: Un progetto open source cresciuto insieme al web

  1. 1. Un progetto open sourcecresciuto insieme al web Asmir Mustafic - Linux Day 2011 Pordenone
  2. 2.  Asmir Mustafic ◦ PHP: 8+ anni ◦ Lavoro @ ◦ PUG Friuli ◦ http://linkedin.com/in/goetas Asmir Mustafic - Linux Day 2011 Pordenone
  3. 3. Su le mani! Asmir Mustafic - Linux Day 2011 Pordenone
  4. 4.  Linguaggio di scripting (1995) ◦ Interpretato Orientato al web Open source (PHP License [non GPL]) Popolare, scalabile, facile, ecc. Asmir Mustafic - Linux Day 2011 Pordenone
  5. 5. Quanto è cambiato il nostro mondonegli ultimi 10 anni, con l’avventodel era di internet? Asmir Mustafic - Linux Day 2011 Pordenone
  6. 6.  Wordpress PHP 10M di download 61M di blog attivi http://wordpress.com Asmir Mustafic - Linux Day 2011 Pordenone
  7. 7.  MediaWiki PHP Opensource Multidatabase Usato da Wikipedia http://www.mediawiki.org Asmir Mustafic - Linux Day 2011 Pordenone
  8. 8.  Search engine & more PHP Migrato da C/C++ a PHP nel 2002 3.4 G pageview/day Uno dei leader del web attuale Asmir Mustafic - Linux Day 2011 Pordenone
  9. 9.  Social network PHP (hiphop) 800M di utenti 10K server http://facebook.com Asmir Mustafic - Linux Day 2011 Pordenone
  10. 10.  Ricerca campione su 10M domini ◦ 59% usa PHP 40 dei 100 siti più vistati al mondo usa PHP 6° posto dei linguaggi più popolari in assoluto (TIOBE Index Settembre 2011) Asmir Mustafic - Linux Day 2011 Pordenone
  11. 11. Perché dovrei scegliere PHP per ilmio prossimo progetto?Cosa ha di buono? Asmir Mustafic - Linux Day 2011 Pordenone
  12. 12. Open source Deployment Community rapidoVeloce & DocumentatoScalabile Estensibile Facile Completo & Maturo Asmir Mustafic - Linux Day 2011 Pordenone
  13. 13. “Si usa Java o .NET per fare i siti seri!” Asmir Mustafic - Linux Day 2011 Pordenone
  14. 14. Uso Storia  1994 Enterprise ◦ Esperimenti per appassionati  1998 ◦ Siti personali Small  2002 ◦ Semplici siti e mini portali Home ◦ Blog e CMS  2008 ◦ Grandi siti ◦ Istituzioni ◦ Multinazionali Asmir Mustafic - Linux Day 2011 Pordenone
  15. 15. Si possono produrre pessimeapplicazioni anche con ottimi linguaggi. Asmir Mustafic - Linux Day 2011 Pordenone
  16. 16. Vediamo tre semplici regole... Asmir Mustafic - Linux Day 2011 Pordenone
  17. 17. Pensare molto bene, prima di iniziare a scrivere codice Asmir Mustafic - Linux Day 2011 Pordenone
  18. 18.  Troverete la soluzione migliore Risolvere un problema in fase di progettazione costa davvero poco In fase di progettazione In fase di sviluppo In produzione Ore di lavro Asmir Mustafic - Linux Day 2011 Pordenone
  19. 19. Non reinventare la ruota Asmir Mustafic - Linux Day 2011 Pordenone
  20. 20.  Problematiche già risolte ◦ Da molto tempo (soluzioni mature) ◦ Nel migliore dei modi ◦ Da molte persone (anche da esperti del problema) Risparmi tempo e fatica Ma se siete davvero sicuri di voi stessi, allora si può provare... Asmir Mustafic - Linux Day 2011 Pordenone
  21. 21. Non essere rigidiAsmir Mustafic - Linux Day 2011 Pordenone
  22. 22.  Non avrete tempo Non avrete voglia Vorrete provare (bene o male che vada, imparerete qualcosa!) Dovrete migliorare la ruota Se non si cambia, non si migliora, si perde in partenza! Asmir Mustafic - Linux Day 2011 Pordenone
  23. 23. Le “regole” sono tante altre…#tu, #cliente, #capo, #team,#specifiche, ecc. Asmir Mustafic - Linux Day 2011 Pordenone
  24. 24. Alcune “best practice” persemplificare la vita... Asmir Mustafic - Linux Day 2011 Pordenone
  25. 25.  Aderite agli standard ◦ Aumenti la qualità Faciliti la collaborazione Richiedere gli standard Standard Soluzioni Filesystem Formattazione Consistenza Strumenti (architetturali) (nomenclatura) Regola #2 Non reinventare la ruota Asmir Mustafic - Linux Day 2011 Pordenone
  26. 26.  Commenti sul codice ◦ phpDocumentor ◦ PEAR UML (consigliato) Schemi e Diagrammi ◦ UML, ER, Wireframe, Workflow... Usate un wiki aziendale o DocBook... Usate un sistema di controllo versione Regola #1 Pensare molto bene prima di iniziare a scrivere codice Asmir Mustafic - Linux Day 2011 Pordenone
  27. 27. Centralizzato (SVN) Distribuito (GIT) Server centrale  Più repository Si lavora su copie locali “principali” Migliore controllo  Si inviano le modifiche accessi ai propri “peer”  Si sfuma il concetto di copia locale Asmir Mustafic - Linux Day 2011 Pordenone
  28. 28. Controller Dividete in entità ben distinte: ◦ Dati (Model) ◦ Visualizzazione (View) ◦ Elaborazione (Controller) Model View Ogni classe/file/funzione assolve ad un solo compito (Single Responsibility Principle)! La maggior parte delle moderne applicazioni ereditano qualche principio da MVC. Asmir Mustafic - Linux Day 2011 Pordenone
  29. 29. <?php$res = mysql_query("SELECT * FROM utenti");?><select name=utente><?phpwhile($data = mysql_fetch_array($res)){ echo "<option value=".$data["id"]." " .($sel==$data["id"]?selected:).">"; echo htmspecialchars($data["nome"],ENT_QUOTES,UTF-8); echo "</option>";}echo "</select>"; Asmir Mustafic - Linux Day 2011 Pordenone
  30. 30. DATI<?php$res = mysql_query("SELECT * FROM utenti");?> LOGICA<select name=utente><?phpwhile($data = mysql_fetch_array($res)){ echo "<option value=".$data["id"]." " .($sel==$data["id"]?selected:).">"; echo htmspecialchars($data["nome"],ENT_QUOTES,UTF-8); echo "</option>";}echo "</select>"; PRESENTAZIONE SICUREZZA Asmir Mustafic - Linux Day 2011 Pordenone
  31. 31. <?php$res = mysql_query("SELECT * FROM utenti");?><select name=utente><?phpwhile($data = mysql_fetch_array($res)){ echo "<option value=".$data["id"]." " .($sel==$data["id"]?selected:).">"; echo htmspecialchars($data["nome"],ENT_QUOTES,UTF-8); echo "</option>";}echo "</select>";  Basta con codice “groviglio”!  Applicate i principi dell’MVC! Asmir Mustafic - Linux Day 2011 Pordenone
  32. 32. Controller<?php$utenti = getElencoUtenti();display("utenti.template", array("utenti"=>$utenti, "sel"=>$selected));Model<?phpfunction getElencoUtenti(){ $res = mysql_query("SELECT * FROM utenti"); return mysql_fetch_all($res) ;}View<select name=name> <? foreach($utenti as $ut): ?> <option <?= selectedIf($ut[id]==$sel)?>><?= escape($ut[nome]) ?> </option> <? endforeach ?></select> Asmir Mustafic - Linux Day 2011 Pordenone
  33. 33. Controller<?php Dati prelevati dal Model$utenti = getElencoUtenti();display("utenti.template", array("utenti"=>$utenti, "sel"=>$selected));Model<?phpfunction getElencoUtenti(){ $res = mysql_query("SELECT * FROM utenti"); return mysql_fetch_all($res) ;}View<select name=name> <? foreach($utenti as $ut): ?> <option <?= selectedIf($ut[id]==$sel)?>><?= escape($ut[nome]) ?> </option> <? endforeach ?></select> Asmir Mustafic - Linux Day 2011 Pordenone
  34. 34. Controller<?php$utenti = getElencoUtenti(); Dati visualizzati tramite la Vistadisplay("utenti.template", array("utenti"=>$utenti, "sel"=>$selected));Model<?phpfunction getElencoUtenti(){ $res = mysql_query("SELECT * FROM utenti"); return mysql_fetch_all($res) ;}View<select name=name> <? foreach($utenti as $ut): ?> <option <?= selectedIf($ut[id]==$sel)?>><?= escape($ut[nome]) ?> </option> <? endforeach ?></select> Asmir Mustafic - Linux Day 2011 Pordenone
  35. 35. Database driver ORM PHP PDO  Doctrine 2 Doctrine DBAL  Propel Creole  dORM ADODB $user = new User(); $user->setName(name); $orm->persist($user); // save $user = $orm->findByName(name); $orm->remove($user); // delete Regola #2 Non reinventare la ruota Model per MVC Asmir Mustafic - Linux Day 2011 Pordenone
  36. 36. Classico XML Attribute Template  Twig  ATal  Smarty  PHPTAL  Dwoo  Open Power Template{if count($utenti)} <ul t:if="count($utenti)"> <ul> <li t:foreach="$utenti as $ut"> {foreach from=$utenti item=ut} {$ut->name} <li> </li> {$ut->name|escape} </ul> </li> {/foreach} </ul>{/if} View per MVC Asmir Mustafic - Linux Day 2011 Pordenone
  37. 37.  Probabilmente ◦ Penserete meglio a ciò che fate (Regola #1) ◦ Non reinventerete la ruota (Regola #2) ◦ Sarete aperti al cambiamento (Regola #3) ◦ Applicherete MVC Probabilmente ◦ Il risultato sarà più standard ◦ Userete un Template Engine ◦ Userete un ORM ◦ Sfrutterete gli strumenti offerti (se fanno al caso vostro) ◦ L’applicazione sarà più sicura ◦ ecc. Otterrete migliori risultati con meno sforzo! Asmir Mustafic - Linux Day 2011 Pordenone
  38. 38.  Non esiste il framework migliore Non esiste il framework peggiore Esiste il framework più adatto! Scegliete il vostro ◦ Orizzontale? Verticale? ◦ PHP4? 5? 5.3+? ◦ ecc. Zend Framework, Symfony, Kohana, eZ Components, Yii,, CakePHP, Lithium, Code Igniter e troppi altri! Asmir Mustafic - Linux Day 2011 Pordenone
  39. 39.  Scrivete i test ◦ Applicate modifiche senza il terrore di “rompere” l’applicazione ◦ PHPUnit (standard de facto) Pensate sempre alla sicurezza Tenete sotto controllo le prestazioni Usate un IDE “serio” ◦ Eclipse, Zend Studio, Aptana, NetBeans, Komodo Usate un debugger ◦ Xdebug, Zend Debugger Provate ◦ Phing, Jenkins, Redmine Asmir Mustafic - Linux Day 2011 Pordenone
  40. 40.  Uno dei modi migliori per mantenersi aggiornati e al passo con i tempi è partecipare al mondo open source. Asmir Mustafic - Linux Day 2011 Pordenone
  41. 41. Domande? Asmir Mustafic - Linux Day 2011 Pordenone
  42. 42.  PHP http://php.net  Yii http://www.yiiframework.com/ Zend Framework http://framework.zend.com  Lithium http://lithify.me/ Symfony http://symfony.com  Kohana http://kohanaframework.org/ eZComponents http://ezcomponents.org http://incubator.apache.org/zetacomponents/  Eclipse http://www.eclipse.org CakePHP http://cakephp.org/  Zend Studio http://www.zend.com/products/studio Twig http://twig-project.com  Net beans http://netbeans.org/ ATal http://opensource.mercuriosistemi.com  Komodo http://www.activestate.com/komodo-ide Dwoo http://dwoo.com Smarty http://smarty.net  Aptana http://www.aptana.com/ OpenPowerTemplate http://www.invenzzia.org  Xdebug http://xdebug.org/ Subversion http://subversion.apache.org GIT http://git-scm.com PHPUnit http://phpunit.de SipleTest http://www.simpletest.org/ Doctrine http://www.doctrine-project.org/ dOrm http://getdorm.com Propel http://www.propelorm.org/ Pear http://pear.php.net phpDocumentor http://www.phpdoc.org/ Phing http://www.phing.info Jenkins http://jenkins-ci.com Redmine http://redmine.com Asmir Mustafic - Linux Day 2011 Pordenone
  43. 43.  php.net phpadvent.com rogchap.com www.slideshare.net/weppos wikipedia.com zend.com langpop.com wordpress.com www.slideshare.net/dlondero joind.in/talk/view/65 Asmir Mustafic - Linux Day 2011 Pordenone

×