A PHP 5.4 újdonságai

Embed Size (px)

Citation preview

  • 1. A PHP 5.4 jdonsgai

2. Bemutatkozs

  • Kovcs Ferenc 3. Elssorban webfejleszt 4. +zemeltets, IT biztonsg, Minsgbiztosts 5. Trsszerkeszt a Weblaboron 6. Kzremkd a PHP projectben 7. __NEM__ evangelista :) 8. A Tyrael nick esetleg ismersebb lehet.

9. Bevezets 10. Trtnelmi visszatekints

  • 4.0 2000.05.22 (Zend Engine) 11. 5.0 2004.07.13 (Zend Engine 2) 12. 5.1 2005.11.24 13. 5.2 2006.11.02 14. 6.0 ??? 15. 5.3 2009.06.30 16. 5.4 ~2011.Q4/2012.Q1

17. Roadmap

  • Az nincs

18. WTF?

  • Van az 5.4 kiads 2 RM-je (Release Manager):
    • Stas Malyshev 19. David Soria Parra
  • Van egy Release Process RFC:
    • https://wiki.php.net/rfc/releaseprocess
  • Illetve egy Voting RFC:
    • https://wiki.php.net/rfc/voting
  • Elmletileg a mindkt RFC el lett fogadva...

20. RM

  • Koordinlja egy adott kiads krli teendket:
    • Kezdemnyezi, illetve moderlja az fejlesztsek krli megbeszlseket, illetve a szavazst. 21. Kijelli a kiadsi folyamat egyes lpseinek cljait s hatridejt. 22. Tageli s csomagolja a kiadsra jellt vltozatot. 23. Gondoskodik rla, hogy a releaseprocess RFC-ben foglaltak betartsra kerlnek.
  • Az RM-ek jvhagysa nlkl nem kerlhet az adott gban j verzi kiadsra.

24. Hogyan alakul ki egy j verzi?

  • Ami az elz verziba valamirt nem frt bele. 25. Minden ami a trunkbl temelhet. 26. Hibajavtsok (minden rintett branchre). 27. Ad hoc fejlesztsek, elmletileg minden nem trivilis fejlesztshez kellene hogy legyen RFC illetve szavazs. 28. A BC(visszafele kompatibilits) illetve a nem megfelel stabilits a leggyakoribb oka annak ha valami vgl mgis kimarad.

29. BC

  • Internal
    • API 30. ABI
  • Userland
    • API
  • Extensions

31. BC

  • Major(4.0, 5.0, etc)
    • Brmilyen BC break engedlyezett.
  • Minor(5.1, 5.2, 5.3)
    • Internal API/ABI megvltozhat. 32. Userland API nem, vagy nagyon indokolt esetben. 33. Kiegsztk tkltztethetek core-bl pecl-be.
  • Micro(5.3.6, 5.3.7)
    • Semmilyen BC break nem engedlyezett. 34. j, nll feature is csak indokolt esetben.

35. Mirt nincs ez mindig gy?

  • A releaseprocess RFC mg nincs 1 ves. 36. Nagyon sok BC break nem szndkosan trtnik s nha tl ksn derl ki: gy marad. 37. Nha ugyan nyilvnval a vltozs, de mindenki gy gondolja, hogy senkit nem fog rinteni. 38. Nha egyszeren nincs ms megolds, mert fontos egy adott javts (biztonsgi rs, etc.).

39. Hogyan lehet ezen segteni?

  • Nvelni kell a teszt esetek coverage-t, illetve komolyan kell venni, ha egy teszteset elkezd elhasalni. (Ez utbbi el volt hanyagolva.) 40. Be kell vonni tbb rsztvevt, alkalmazst az RC verzik tesztelsbe, hogy mg a stable eltt legyen lehetsg kiszrni s javtani a hibkat. 41. Be kell tartani az RFC-t...

42. jdonsgok 43. Closure rebind

  • 5.3-ban megllapods hinyban nem lett megvalstva az objektumok tmogatsa a nvtelen fggvnyekhez:
    • https://wiki.php.net/rfc/closures/removal-of-this
  • 5.4-ben immr erre is lehetsgnk lesz.

44. Closure rebind

  • Mostantl a Closure-khz tartozhat egy scope:
    • A Closure gy ri el a bound objektumot mintha a Closure a scope-ban megadott osztlyban lenne egy metdus. (visibility miatt fontos pl.)
  • Mostantl a Closure-khz tartozhat egy hozzrendelt(bound) objektum.
    • Ez lesz a $this az adott Closure szmra.
  • Mostantl a Closure-k definilhatak static-knt.
    • Ebben az esetben nem rhet el a $this.

45. Closure rebind

  • Scope:
    • Ha egy osztlyon bell lett a Closure definilva, akkor az adott osztly lesz a scope automatikusan. 46. Ha rebindoljuk a Closure::bind() vagy $closure->bindTo() fggvnyhivsokkal, akkor az ott megadott objektum scopejt kapja. 47. Closure::bind() 3. paramtern keresztl megadhat a boundtl eltr scope. 48. Statikusan definilt Closure is rendelkezhet Scope-pal. 49. Fentiekbl kvetkezik, hogy nem mindig van Scope.

50. Closure rebind

  • Bound:
    • Ha egy osztlyon bell lett a Closure definilva, akkor az adott pldny lesz a bound objektum automatikusan. 51. A bound objektum vltoztathat a Closure::bind() vagy $closure->bindTo() metdusn keresztl. 52. Statikus Closure nem rendelkezhet Bound objektummal.

53. Closure rebind

  • Static:
    • Egy Closure akkor statikus, ha a static kulcsszval vagy ha egy statikus metduson bell definiltuk. 54. Statikusan definilt Closure is rendelkezhet Scope-pal. 55. Statikus Closure nem rendelkezhet Bound objektummal.

56. Closure rebind "value= "123"/>< inputtype= "file"name= "file1"/>< inputtype= "file"name= "file2"/>< inputtype= "submit"/> 93. session.upload.progress $_SESSION [ "upload_progress_123" ] =array ("start_time"=>1234567890 ,// The request time "content_length"=>57343257 ,// POST content length "bytes_processed"=>453489 ,// Amount of bytes received and processed "done"=> false,// true when the POST handler has finished, successfully or not "files"=>array (0=>array ("field_name"=>"file1" ,// Name of the field // The following 3 elements equals those in $_FILES "name"=>"foo.avi" ,"tmp_name"=>"/tmp/phpxxxxxx" ,"error"=>0 ,"done"=> true,// True when the POST handler has finished handling this file "start_time"=>1234567890 ,// When this file has started to be processed "bytes_processed"=>57343250 ,// Amount of bytes received and processed for this file ),); 94. mysql

  • Mostantl a mysqlnd lesz az alaprtelmezett mysql library, de tovbbra is van lehetsg a libmysql-t hasznlni. 95. libmysqlbl mr csak 4.1es illetve magasabb verzi tmogatott, elkpzelhet hogy a vgleges verziban ez mg feljebb kszik. 96. Felmerlt, hogy a mysql extensiont dokumentci szinten ellenjavaltt kellene tenni, a mysqli kiegszts nagyon egyszer migrcit tesz lehetv, s folyamatosan fejleszts alatt ll, szemben a mysql extensionnel.

97. Rgisgek 98. Vgkpp eltrlve

  • break/continue $var 99. magic_quotes_gpc (ha csak ellenrizted, hogy be van-e kapcsolva, az tovbbra is mkdik) 100. Safe mode 101. register_globals 102. register_long_arrays 103. import_request_variables() 104. allow_call_time_pass_reference. 105. define_syslog_variables 106. highlight.bg 107. session.bug_compat_42 108. session_is_registered()/session_register()/session_unregister() 109. y2k_compliance 110. Sqlite szmzve Szibriba(pecl), ajnlott az SQLite3 kiegsztre tllni

111. s mg sok egyb 112. Nhny egyb

  • E_STRICT mostantl az E_ALL rsze 113.