Php 5.5

1,046 views

Published on

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

No Downloads
Views
Total views
1,046
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
7
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Php 5.5

  1. 1. A PHP 5.5 újdonságaiKovács Ferenchttp://tyrael.hu/http://twitter.com/Tyr43ltyrael@php.netDeveloper @ http://ustream.tv/ 17/1
  2. 2. Roadmap● 5.3.0 – 2009.06.30● 5.4.0 – 2012.03.01● 5.5.0 - ??? 17/2
  3. 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. 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. 5. Finally 17/5
  6. 6. Generators 17/6
  7. 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. 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. 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
  10. 10. List() támogatása a foreach  fejlécben 17/10
  11. 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. 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. 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. 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. 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. 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
  17. 17. Viszlát, és kösz a halakat! 17/17

×