php: back to basicsa fast overviewFabio Mora @morafabio http://fabio.mora.name1
La storia• Rasmus Lerdorf (1968, danimarca) ha bisogno ditracciare le visite sul suo sito internet• Per farlo decide di sc...
La storia3PHP/FI<!--getenv HTTP_USER_AGENT--><!--ifsubstr $exec_result Mozilla-->Hey, you are using Netscape!<p><!--endif-...
Rasmus LerdorfphpDay 2012,Verona (IT)
La storia• Rasmus riscrive PHP/FI con una sintassi il più vicinapossibile al C• Integra supporto ai database(Postres95, DB...
La storia6PHP/FI 2<?$name = "bob";$db = "db";$result = msql($db,"select * from table where firstname=$name");$num = msql_n...
Zeev SuraskiphpDay 2012,Verona (IT)
La storia• Il progetto ora è PHP Hypertext Preprocessor• La nuova versione è PHP 3: include API, supportomulti database, è...
La storia• Arriva PHP 5 assieme allo Zend Engine 2.0• Il paradigma OOP ora è completo• PEAR (PHP Extension and Application...
La sintassi• Semplice e facile da capire• Gli statements terminano sempre consemi-colon ;• Deriva da C, Perl e Java.• File...
Tag PHP• Standard<?php ?>• Short<? ?>, <?=$var ?>• Script<script language=”php”></script>• ASP<% %>11
Tag PHP• Standard<?php ?>• Short<? ?>, <?=$var ?>• Script<script language=”php”></script>• ASP<% %>12Short, script ed ASP ...
Caratteri newline• Tutti i caratteri fuori dai tag PHP sono copiati cosìcome sono verso loutput• Le sequenze di newline va...
Caratteri newline• Tutti i caratteri fuori dai tag PHP sono copiati cosìcome sono verso loutput• Le sequenze di newline va...
Dati scalariTipi di dato:• boolean: un valore che può essere o true o false• int: con segno, intero• string: un valore con...
Dati compound e altri tipiCompound• Array: sono contenitori di dati ordinati e possino essereusati per fare store di quals...
Overflow?!17PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the an...
Overflow?!18PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the an...
Overflow?!19PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the an...
Overflow?!20PHP non tiene traccia degli overflow ed operazioni banalipossono causare risultati catastrofici.print ‘And the an...
Mappa degli operatori21
Mappa degli operatori22
Mappa degli operatori23
Mappa degli operatori24
Functions & OOP25PHP 5.3 ZCE Study GuideZend Technologies Ltd.Pagg. 82 - 112Sebastian BergmannUnderstanding the PHP Object...
Task 1: da procedure a Symfony 226Symfony 2.0 BookSensioLabsPagg. 14 - 25
Books27PHP Objects, Patterns, and PracticeMatt ZandstraApress
Upcoming SlideShare
Loading in …5
×

php: back to basics

383
-1

Published on

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
383
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

php: back to basics

  1. 1. php: back to basicsa fast overviewFabio Mora @morafabio http://fabio.mora.name1
  2. 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. 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. 4. Rasmus LerdorfphpDay 2012,Verona (IT)
  5. 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. 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. 7. Zeev SuraskiphpDay 2012,Verona (IT)
  8. 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. 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. 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. 11. Tag PHP• Standard<?php ?>• Short<? ?>, <?=$var ?>• Script<script language=”php”></script>• ASP<% %>11
  12. 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. 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. 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. 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. 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. 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. 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. 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. 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. 21. Mappa degli operatori21
  22. 22. Mappa degli operatori22
  23. 23. Mappa degli operatori23
  24. 24. Mappa degli operatori24
  25. 25. Functions & OOP25PHP 5.3 ZCE Study GuideZend Technologies Ltd.Pagg. 82 - 112Sebastian BergmannUnderstanding the PHP Object Modelhttp://goo.gl/pA8MB
  26. 26. Task 1: da procedure a Symfony 226Symfony 2.0 BookSensioLabsPagg. 14 - 25
  27. 27. Books27PHP Objects, Patterns, and PracticeMatt ZandstraApress

×