Your SlideShare is downloading. ×

php: back to basics

312

Published on

slides from a workshop - 2012 …

slides from a workshop - 2012

history, syntax, overflow, operators, oop and functions, php5.4, symfony, automated tests

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

  • Be the first to like this

No Downloads
Views
Total Views
312
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. php: back to basicsa fast overviewFabio Mora @morafabio http://fabio.mora.name1
  • 2. La storia• Rasmus Lerdorf (1968, danimarca) ha bisogno ditracciare le visite sul suo sito internet• Per farlo decide di scrivere un modulo CGI(Common Gateway Interface)• Lo chiama Personal HomePage/Form Interpreter• La sintassi era simile al Perl21994
  • 3. La storia3PHP/FI<!--getenv HTTP_USER_AGENT--><!--ifsubstr $exec_result Mozilla-->Hey, you are using Netscape!<p><!--endif--><!--sql database select * from table where user=$username--><!--ifless $numentries 1-->Sorry, that record does not exist<p><!--endif exit-->Welcome <!--$user-->!<p>You have <!--$index:0--> credits left in your account.<p><!--include /text/footer.html-->
  • 4. Rasmus LerdorfphpDay 2012,Verona (IT)
  • 5. La storia• Rasmus riscrive PHP/FI con una sintassi il più vicinapossibile al C• Integra supporto ai database(Postres95, DBM, mSQL)• Accesso ai cookie• Due studenti australiani, Andi Gutmans e ZeevSuraki, contattano Rasmus per offrirgli aiuto• Nasce il primo devteam di PHP51995
  • 6. La storia6PHP/FI 2<?$name = "bob";$db = "db";$result = msql($db,"select * from table where firstname=$name");$num = msql_numrows($result);echo "$num records found!<p>";$i=0;while($i<$num);echo msql_result($result,$i,"fullname");echo "<br>";echo msql_result($result,$i,"address");echo "<br>";$i++;endwhile;?>
  • 7. Zeev SuraskiphpDay 2012,Verona (IT)
  • 8. La storia• Il progetto ora è PHP Hypertext Preprocessor• La nuova versione è PHP 3: include API, supportomulti database, è slegato dal POSIX e funzionaanche su Microsoft Windows.• In breve raggiunge il 10% dei domini attivi (erano60.000 allepoca)81998• Viene rilasciato PHP4 con il primo Zend Core(dai nomi Zeev + Andi)• Include full support ad HTTP, output buffering,moduli esterni ed una prima versione di OOP2000
  • 9. La storia• Arriva PHP 5 assieme allo Zend Engine 2.0• Il paradigma OOP ora è completo• PEAR (PHP Extension and Application Repository)• PECL (PHP Extensions Community Library)92004• 2008 PHP 5.3: closures, namespaces, lambda...• 2012 PHP 5.4: traits, short array syntax, UTF-8......ad oggi
  • 10. La sintassi• Semplice e facile da capire• Gli statements terminano sempre consemi-colon ;• Deriva da C, Perl e Java.• File di testo con allinterno dei tag speciali• Per commentare una singola riga si usa ildouble slash // , la multipla /**/.10
  • 11. Tag PHP• Standard<?php ?>• Short<? ?>, <?=$var ?>• Script<script language=”php”></script>• ASP<% %>11
  • 12. Tag PHP• Standard<?php ?>• Short<? ?>, <?=$var ?>• Script<script language=”php”></script>• ASP<% %>12Short, script ed ASP sono deprecati, ed il lorouso è fortemente scoraggiato!
  • 13. Caratteri newline• Tutti i caratteri fuori dai tag PHP sono copiati cosìcome sono verso loutput• Le sequenze di newline valide sono r, n o rn.• Ma in HTTP il carattere n è usato per separare gliheaders• La prima newline dopo il tag di chiusura ?> vienesempre eliminata dall’interprete• Alcuni editor aggiungono automaticamente una nalla fine dei file13
  • 14. Caratteri newline• Tutti i caratteri fuori dai tag PHP sono copiati cosìcome sono verso loutput• Le sequenze di newline valide sono r, n o rn.• Ma in HTTP il carattere n è usato per separare gliheaders• La prima newline dopo il tag di chiusura ?> vienesempre eliminata dall’interprete• Alcuni editor aggiungono automaticamente una nalla fine dei file14Se non è strettamente necessario, è meglio nonaggiungere mai il tag PHP di chiusura ad un file
  • 15. Dati scalariTipi di dato:• boolean: un valore che può essere o true o false• int: con segno, intero• string: un valore con tipo di dato binario• float: con segno, floating-pointSistemi di numerazione:• Decimal: notazione standard, es. 20; -30; 1239...• Octal: identificata dal leading zero, es. 0777, 0200...Attenzione a non confondere ottale e decimale: 0777 è diverso da 777!• Hexadecimal: identificata dal prefisso 0x (case insensitive),es. 0x101, 0XFF, -0X12Notazioni:• Decimale: tradizionale 0.12, 123.10, -554• Esponenziale: identificata dalla mantissa, es. 1E2, 2E5, 1.2e3,15
  • 16. Dati compound e altri tipiCompound• Array: sono contenitori di dati ordinati e possino essereusati per fare store di qualsiasi altro tipo di dato.• Oggetti: sono contenitori di dati e codiceAltri tipi speciali• Null: indica che non cè valore, è una special flag.• Resource: è un tipo di dato che indica una risorsa nonnativa di PHP, come ad esempio i context16
  • 17. Overflow?!17PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the answer is... ’ . (int) ( (0.1 + 0.7) * 10 );Cosa stampa la riga sopra?
  • 18. Overflow?!18PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the answer is... ’ . (int) ( (0.1 + 0.7) * 10 );Cosa stampa la riga sopra?0,1 più 0,7 fa 0,8, che per 10 fa 8. Ok?
  • 19. Overflow?!19PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the answer is... ’ . (int) ( (0.1 + 0.7) * 10 );Cosa stampa la riga sopra?0,1 più 0,7 fa 0,8, che per 10 fa 8. Ok?And the answer is... 7
  • 20. Overflow?!20PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the answer is... ’ . (int) ( (0.1 + 0.7) * 10 );Cosa stampa la riga sopra?0,1 più 0,7 fa 0,8, che per 10 fa 8. Ok?And the answer is... 7I float 0.1 + 0.7 è invece uguale a 7.999999 e durante ilcast, la parte decimale viene troncata. Il risultato è unerrore del 12,5%!Per le operazioni matematiche va usatal’estensione BCMath.
  • 21. Mappa degli operatori21
  • 22. Mappa degli operatori22
  • 23. Mappa degli operatori23
  • 24. Mappa degli operatori24
  • 25. Functions & OOP25PHP 5.3 ZCE Study GuideZend Technologies Ltd.Pagg. 82 - 112Sebastian BergmannUnderstanding the PHP Object Modelhttp://goo.gl/pA8MB
  • 26. Task 1: da procedure a Symfony 226Symfony 2.0 BookSensioLabsPagg. 14 - 25
  • 27. Books27PHP Objects, Patterns, and PracticeMatt ZandstraApress

×