SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
A PHP 5.5 újdonságai



Kovács Ferenc
http://tyrael.hu/
http://twitter.com/Tyr43l
tyrael@php.net
Developer @ http://ustream.tv/


                                 17/1
Roadmap

●   5.3.0 – 2009.06.30
●   5.4.0 – 2012.03.01
●   5.5.0 - ???




                               17/2
Roadmap

●   https://wiki.php.net/rfc/releaseprocess
    –   Évenkénti kiadások (minor vagy major verzió)
    –   3 év támogatás a megjelenéstől számítva
        ●   2 évig hiba és biztonsági javítások
        ●   +1 évig biztonsági javítások
●   https://wiki.php.net/rfc/php53eol
    –    Az 5.5 megjelenését követően az 5.3-höz már csak a
        biztonsági javítások jönnek 1 évig.

                                                              17/3
Roadmap

●   Az eredeti roadmap: https://wiki.php.net/todo/php55
●   Eredetileg január 31 lett volna a beta1 (Feature
    Freeze).
●   Gyakorlatilag március 31 lett belőle.
●   A csúszás egyik legnagyobb oka a Zend Opcache.
●   Várhatóan Q1 helyett Q2 lesz a végleges kiadás
    időpontja a szükséges beta/RC-k számától függően.
●   Ez azt jelentené, hogy az 5.3 EOL lesz 2014 Q2-re.
                                                          17/4
Finally




          17/5
Generators




             17/6
Generators

●   1-1 sor lekérdezése belekerülhetne a ciklusba, de az csúnya,
    nem érdekel minket honnan, vagy hogyan jön az adat, mi fel
    akarjuk dolgozni.
●   getFilesFromFile() visszatérhetne egy hatalmas tömbbel, de
    az pazarlás.
●   getFilesFromFile() visszatérhetne egy iterátorral ami már jó,
    de elég sok boilerplate kell hozzá, plusz szembemegy a PHP
    multiparadigmás elveivel.
●   A yield felfüggeszti a függvény futását, visszatér a megadott
    értékkel, majd a következő hívás a yieldtől fut tovább.

                                                                    17/7
Opcache

●   A Zend az Optimizer+ nevű fizetős opcode cache-ét
    tette nyílt forrásúvá, és (alapból kikapcsoltan) be fog
    kerülni az 5.5-be core ext-ként.
●   Az APC fejlesztése valószínűleg le fog lassulni, meg
    fog állni.
●   Folyamatban van egy kicsontozott APC fejlesztése,
    ami csak változók tárolására használható az APC-vel
    azonos API-n keresztül:
    https://github.com/krakjoe/apcu
                                                              17/8
Opcache
●   A core fejlesztők között van több jelenlegi/ex Zend alkalmazott, aki ismeri a
    kódbázist, a kódnyitás után elég sokan kezdék el nézegetni, talán több aktív
    fejlesztője lesz, mint az APCnek.
●   Mivel a core része, ezért jó esetben nem jöhet ki úgy új release, hogy nincs
    hozzá/törött az opcode cache támogatás.
●   Évek óta használatban lévő eszköz, szóval a józan ész azt diktálná, hogy
    viszonylag kevés triviális hibát tartalmaz.
●   Sajnos a Zend stackben nem használnak Thread Safe SAPI-t, szóval TS
    környezetben akad még vele munka, de elméletileg dolgoznak az ügyön.




                                                                                    17/9
List() támogatása a foreach 
          fejlécben




                               17/10
Egyszerűsített jelszó hash API
●   array password_get_info ( string $hash )
    –   Visszaad egy tömböt: algo, algoName és options elemekkel.
●   string password_hash ( string $password , integer $algo [, array $options ] )
●   boolean password_needs_rehash ( string $hash , string $algo [, string $options ] )
●   boolean password_verify ( string $password , string $hash )
●   $options egyelőre csak a salt-ot és a cost-ot tartalmazhatja.
●   algo egyelőre PASSWORD_BCRYPT vagy PASSWORD_DEFAULT támogatott, azt
    utóbbi minor/major verzióban változhat.




                                                                                         17/11
Újdonságok
●   ext/intl::UConverter, rengeteg további intl/ICU okosítás, cserébe
    ICU követelmény felkúszott >= 4.0-ra.
●   Egy tucat új curl függvény, egy rakás új CURLOPT, köztük a
    CURLOPT_SAFE_UPLOAD, ami biztonságosabb fájl küldést tesz
    lehetővé ('@/path/to/file' helyett new CurlFile('/path/to/file',
    'image/png'); ).
●
    Systemtap támogatás, az 5.3-ban hozzáadott dtrace probe-ok
    mostantól systemtap-en keresztül is elérhetőek.
●   DateTimeImmutable, a DateTime-ból származtatott osztály,
    modify() nem módosítja a példányt, új értékkel tér vissza. Sérti az
    LSP-t, nem biztos, hogy megéri a végleges verziót.

                                                                          17/12
Újdonságok
●   boolval() - no comment
●   set_error_handler/set_exception_handler NULL callbackkel hívva visszaállítja a
    gyári handlert és visszatér az utoljára beállítottal.
●   Abszolút osztálynév feloldás a class konstans használatával:
    echo ClassName::class; // 'ANamespacedClassName'
●   Már kifejezések üressége is vizsgálható az empty()-vel.
●   hash_pbkdf2() hash függvény pbkdf2 alapokon, kötelezően meg kell adni a
    használni kívánt hash algot, egy salt-ot és egy iterációszámot.
●   FILTER_VALIDATE_MAC, FILTER_SANITIZE_MAC
●   ext/sockets kapott két új függvényt: sendmsg és recvmsg néven, kiegészítő
    adatokat lehet vele küldeni, fogadni(IPV6_PKTINFO, IPV6_HOPLIMIT,
    IPV6_TCLASS, SCM_RIGHTS, SCM_CREDENTIALS/SO_PASSCRED).

                                                                                     17/13
Újdonságok
●   Lesz mysqli_begin_transaction(), mysqli_savepoint(),
    mysqli_release_savepoint().
●   Új php.ini beállítás: sys_temp_dir
●   Működni fog a 'foo'[2] és az array('bar'=>'baz)['bar'] is(ez 5.4 óta
    változókkal/kifejezésekkel már működött).
●   array_column(): más nyelvekben még pluck néven is fut,
    többdimenziós tömbből lehet vele visszakérni minden sorból egy
    megadott oszlophoz tartozó értékek listáját.
●   cli_get_process_title/cli_set_process_title: cli processzhez tartozó cím
    (ami ps kimenetben, ablakfejlécben, etc. látszik) lekérdezhető és
    beállítható lesz minden nagyobb platformon.

                                                                               17/14
Régiségek (E_DEPRECATED)

●   /e kapcsoló ellenjavalttá válik a preg_replace()
    hívásban.
●   ext/mysql ellenjavalttá vált.
●   mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and
    mcrypt_ofb() ellenjavalttá
    vált(mcrypt_generic/mdecrypt_generic helyette).
●   Ellenjavalt lesz az objektumból másik osztály statikus
    metódusának a hívásakor a $this „öröklése”. Bár még
    nem lett bemergelve, de meg lett szavazva.
                                                             17/15
Visszafelé nem kompatibilis változások

●   Bugfix: unpack("a5", "str00") 5.5 előtt 3 hosszú
    stringet adott vissza, 5.5től a helyes 5 hosszú NUL
    paddolt stringet, a 'Z' kapcsolóval elérhető a régi
    hibás viselkedés továbbra is.
●   php_logo_guid(), php_egg_logo_guid(),
    php_real_logo_guid(), zend_logo_guid() függvények
    eltávolításra kerültek, helyettük data url-ek
    használata javasolt.


                                                          17/16
Viszlát, és kösz a halakat!




                              17/17

Mais conteúdo relacionado

Semelhante a Php 5.5

Syslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekSyslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekJános Pásztor
 
Drupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiákDrupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiákJános Fehér
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Open Academy
 
A Redis lehetőségei
A Redis lehetőségeiA Redis lehetőségei
A Redis lehetőségeivvinston
 
Flash és PHP Kommunikáció
Flash és PHP KommunikációFlash és PHP Kommunikáció
Flash és PHP Kommunikációtlof
 
1 java megismerese
1 java megismerese1 java megismerese
1 java megismeresebalazs85
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtestczras
 
Netfilter elméleti alapok
Netfilter elméleti alapokNetfilter elméleti alapok
Netfilter elméleti alapokBenedek Rakovics
 
Led matrix-dokumentáció
Led matrix-dokumentációLed matrix-dokumentáció
Led matrix-dokumentációTamás Mayer
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolásFerenc Szalai
 
Cgi röviden ajmar
Cgi röviden ajmarCgi röviden ajmar
Cgi röviden ajmarbonami2014
 
SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2Kálmán Kéménczy
 

Semelhante a Php 5.5 (18)

Syslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekSyslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknek
 
Drupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiákDrupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiák
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 
Drupal security
Drupal securityDrupal security
Drupal security
 
A Redis lehetőségei
A Redis lehetőségeiA Redis lehetőségei
A Redis lehetőségei
 
Linux alapok
Linux alapokLinux alapok
Linux alapok
 
Flash és PHP Kommunikáció
Flash és PHP KommunikációFlash és PHP Kommunikáció
Flash és PHP Kommunikáció
 
Jee kurzus 8. het
Jee kurzus 8. hetJee kurzus 8. het
Jee kurzus 8. het
 
1 java megismerese
1 java megismerese1 java megismerese
1 java megismerese
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtest
 
Netfilter elméleti alapok
Netfilter elméleti alapokNetfilter elméleti alapok
Netfilter elméleti alapok
 
Led matrix-dokumentáció
Led matrix-dokumentációLed matrix-dokumentáció
Led matrix-dokumentáció
 
Ci
CiCi
Ci
 
Hello Laravel 5!
Hello Laravel 5!Hello Laravel 5!
Hello Laravel 5!
 
Grid és adattárolás
Grid és adattárolásGrid és adattárolás
Grid és adattárolás
 
Cgi röviden ajmar
Cgi röviden ajmarCgi röviden ajmar
Cgi röviden ajmar
 
SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2SUSE Linux Enterprise 11 admin 2
SUSE Linux Enterprise 11 admin 2
 
Sles admin
Sles adminSles admin
Sles admin
 

Php 5.5

  • 2. Roadmap ● 5.3.0 – 2009.06.30 ● 5.4.0 – 2012.03.01 ● 5.5.0 - ??? 17/2
  • 3. Roadmap ● https://wiki.php.net/rfc/releaseprocess – Évenkénti kiadások (minor vagy major verzió) – 3 év támogatás a megjelenéstől számítva ● 2 évig hiba és biztonsági javítások ● +1 évig biztonsági javítások ● https://wiki.php.net/rfc/php53eol – Az 5.5 megjelenését követően az 5.3-höz már csak a biztonsági javítások jönnek 1 évig. 17/3
  • 4. Roadmap ● Az eredeti roadmap: https://wiki.php.net/todo/php55 ● Eredetileg január 31 lett volna a beta1 (Feature Freeze). ● Gyakorlatilag március 31 lett belőle. ● A csúszás egyik legnagyobb oka a Zend Opcache. ● Várhatóan Q1 helyett Q2 lesz a végleges kiadás időpontja a szükséges beta/RC-k számától függően. ● Ez azt jelentené, hogy az 5.3 EOL lesz 2014 Q2-re. 17/4
  • 5. Finally 17/5
  • 6. Generators 17/6
  • 7. Generators ● 1-1 sor lekérdezése belekerülhetne a ciklusba, de az csúnya, nem érdekel minket honnan, vagy hogyan jön az adat, mi fel akarjuk dolgozni. ● getFilesFromFile() visszatérhetne egy hatalmas tömbbel, de az pazarlás. ● getFilesFromFile() visszatérhetne egy iterátorral ami már jó, de elég sok boilerplate kell hozzá, plusz szembemegy a PHP multiparadigmás elveivel. ● A yield felfüggeszti a függvény futását, visszatér a megadott értékkel, majd a következő hívás a yieldtől fut tovább. 17/7
  • 8. Opcache ● A Zend az Optimizer+ nevű fizetős opcode cache-ét tette nyílt forrásúvá, és (alapból kikapcsoltan) be fog kerülni az 5.5-be core ext-ként. ● Az APC fejlesztése valószínűleg le fog lassulni, meg fog állni. ● Folyamatban van egy kicsontozott APC fejlesztése, ami csak változók tárolására használható az APC-vel azonos API-n keresztül: https://github.com/krakjoe/apcu 17/8
  • 9. Opcache ● A core fejlesztők között van több jelenlegi/ex Zend alkalmazott, aki ismeri a kódbázist, a kódnyitás után elég sokan kezdék el nézegetni, talán több aktív fejlesztője lesz, mint az APCnek. ● Mivel a core része, ezért jó esetben nem jöhet ki úgy új release, hogy nincs hozzá/törött az opcode cache támogatás. ● Évek óta használatban lévő eszköz, szóval a józan ész azt diktálná, hogy viszonylag kevés triviális hibát tartalmaz. ● Sajnos a Zend stackben nem használnak Thread Safe SAPI-t, szóval TS környezetben akad még vele munka, de elméletileg dolgoznak az ügyön. 17/9
  • 11. Egyszerűsített jelszó hash API ● array password_get_info ( string $hash ) – Visszaad egy tömböt: algo, algoName és options elemekkel. ● string password_hash ( string $password , integer $algo [, array $options ] ) ● boolean password_needs_rehash ( string $hash , string $algo [, string $options ] ) ● boolean password_verify ( string $password , string $hash ) ● $options egyelőre csak a salt-ot és a cost-ot tartalmazhatja. ● algo egyelőre PASSWORD_BCRYPT vagy PASSWORD_DEFAULT támogatott, azt utóbbi minor/major verzióban változhat. 17/11
  • 12. Újdonságok ● ext/intl::UConverter, rengeteg további intl/ICU okosítás, cserébe ICU követelmény felkúszott >= 4.0-ra. ● Egy tucat új curl függvény, egy rakás új CURLOPT, köztük a CURLOPT_SAFE_UPLOAD, ami biztonságosabb fájl küldést tesz lehetővé ('@/path/to/file' helyett new CurlFile('/path/to/file', 'image/png'); ). ● Systemtap támogatás, az 5.3-ban hozzáadott dtrace probe-ok mostantól systemtap-en keresztül is elérhetőek. ● DateTimeImmutable, a DateTime-ból származtatott osztály, modify() nem módosítja a példányt, új értékkel tér vissza. Sérti az LSP-t, nem biztos, hogy megéri a végleges verziót. 17/12
  • 13. Újdonságok ● boolval() - no comment ● set_error_handler/set_exception_handler NULL callbackkel hívva visszaállítja a gyári handlert és visszatér az utoljára beállítottal. ● Abszolút osztálynév feloldás a class konstans használatával: echo ClassName::class; // 'ANamespacedClassName' ● Már kifejezések üressége is vizsgálható az empty()-vel. ● hash_pbkdf2() hash függvény pbkdf2 alapokon, kötelezően meg kell adni a használni kívánt hash algot, egy salt-ot és egy iterációszámot. ● FILTER_VALIDATE_MAC, FILTER_SANITIZE_MAC ● ext/sockets kapott két új függvényt: sendmsg és recvmsg néven, kiegészítő adatokat lehet vele küldeni, fogadni(IPV6_PKTINFO, IPV6_HOPLIMIT, IPV6_TCLASS, SCM_RIGHTS, SCM_CREDENTIALS/SO_PASSCRED). 17/13
  • 14. Újdonságok ● Lesz mysqli_begin_transaction(), mysqli_savepoint(), mysqli_release_savepoint(). ● Új php.ini beállítás: sys_temp_dir ● Működni fog a 'foo'[2] és az array('bar'=>'baz)['bar'] is(ez 5.4 óta változókkal/kifejezésekkel már működött). ● array_column(): más nyelvekben még pluck néven is fut, többdimenziós tömbből lehet vele visszakérni minden sorból egy megadott oszlophoz tartozó értékek listáját. ● cli_get_process_title/cli_set_process_title: cli processzhez tartozó cím (ami ps kimenetben, ablakfejlécben, etc. látszik) lekérdezhető és beállítható lesz minden nagyobb platformon. 17/14
  • 15. Régiségek (E_DEPRECATED) ● /e kapcsoló ellenjavalttá válik a preg_replace() hívásban. ● ext/mysql ellenjavalttá vált. ● mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() ellenjavalttá vált(mcrypt_generic/mdecrypt_generic helyette). ● Ellenjavalt lesz az objektumból másik osztály statikus metódusának a hívásakor a $this „öröklése”. Bár még nem lett bemergelve, de meg lett szavazva. 17/15
  • 16. Visszafelé nem kompatibilis változások ● Bugfix: unpack("a5", "str00") 5.5 előtt 3 hosszú stringet adott vissza, 5.5től a helyes 5 hosszú NUL paddolt stringet, a 'Z' kapcsolóval elérhető a régi hibás viselkedés továbbra is. ● php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(), zend_logo_guid() függvények eltávolításra kerültek, helyettük data url-ek használata javasolt. 17/16