Your SlideShare is downloading. ×
0
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

A PHP 5.5 újdonságai.

1,277

Published on

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

No Downloads
Views
Total Views
1,277
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
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. 27/1A PHP 5.5 újdonságaiKovács Ferenchttp://tyrael.hu/http://twitter.com/Tyr43ltyrael@php.netDeveloper @ http://ustream.tv/
  • 2. 27/2Roadmap● 5.3.0 – 2009.06.30● 5.4.0 – 2012.03.01● 5.5.0 – 2013 Q2
  • 3. 27/3Roadmap● 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 abiztonsági javítások jönnek 1 évig.
  • 4. 27/4Roadmap● Az eredeti roadmap: https://wiki.php.net/todo/php55● Elméletileg 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 feltűnése.● Q1 helyett Q2 lesz a végleges kiadás időpontja a szükségesbeta/RC-k számától függően.● Tehát az 5.3 EOLed lesz ~2014 Q2-től.
  • 5. 27/5Finally
  • 6. 27/6Finally● A finally minden esetben(siker, el nem kapottkivétel,return) meghívódik, kivéve a fatális hibákat.● Így a legegyszerűbb megoldani, hogy mindenesetben feltakarítson maga után a kódunk (tempfájlok törlése, lock elengedése, etc.).● Egymásba ágyazott try blokkok esetén belülrőlkifelé(fentről lefelé) haladó sorrendben hívódnakmeg a finally-k.
  • 7. 27/7Generátorok
  • 8. 27/8Generátorok● 1-1 sor lekérdezése belekerülhetne a ciklusba, de az csúnya, nem érdekelminket honnan, vagy hogyan jön az adat, mi fel akarjuk dolgozni.● getFilesFromFile() visszatérhetne egyben az egész tömbbel, de azfeleslegesen emelné a peak memória használatot, plusz nem biztos, hogymindig csak véges elemszámot tudnánk generálni.● getFilesFromFile() visszatérhetne egy iterátorral ami már jó, nem kellegyszerre sok memóriát allokálni, és megvalósítható a végtelen elemszámgenerálása is de elég sok boilerplate kell hozzá, plusz szembemegy a PHPmultiparadigmás elveivel, ha csak így lehet megoldani.
  • 9. 27/9Generátorok●A yield-et tartalmazó függvény első hívásakor egy Generator példánnyal tér vissza, amely egyIterator-t valósít meg.●A Generator osztály nem példányosítható manuálisan.●A visszakapott Generator bejárása meghívja(folytatja) a függvény futását a következő yield-ig,amelynek az értékével visszatér.●Ez a pingpong megy amíg nem jön egy return; a Generatorból, vagy el nem fogynak a yieldek,vagy abba nem hagyja a hívó az iterálást, vagy nem jön egy a generátorban el nem kapottException.● Yield dobhat kulcs => érték párt, illetve mind érték mind referencia szerint.● A Generator példány send metódusának hívásával lehet adatot is küldeni a generátorfüggvénynek, ez ugyanúgy lépteti az iterációt és a függvénytörzsben a yield visszatérésiértékeként érkezik meg a küldött adat.●A Generator példány throw metódusával lehet kivételt is dobni kívülről, amit ugyanúgy lépteti aziterációt, ha a függvénytörzsben elkapódik a kivétel, akkor a következő elem jön vissza, ha nem,akkor a kivétel.
  • 10. 27/10Opcache●A Zend az Optimizer+ nevű fizetős opcode cache-ét tette nyílt forrásúvá, és (alapbólkikapcsoltan) be fog kerülni az 5.5-be core ext-ként.● A core fejlesztők között van több jelenlegi/ex Zend alkalmazott, aki ismeri akódbázist, a kódnyitás után elég sokan kezdék el nézegetni, talán több aktívfejlesztője lesz, mint az APCnek.●Sajnos a Zend stackben nem használnak Thread Safe SAPI-t, szóval TSkörnyezetben akad még vele munka, de elméletileg dolgoznak az ügyön.●Mivel a core része, ezért jó esetben nem jöhet ki úgy új kiadás, hogy nincs hozzávagy törött az opcode cache támogatás (PHP 5.4 /o).●Data Cache funkciót nem tartalmaz, az APC ezen részét nem váltja ki,defolyamatban van egy kicsontozott APC fejlesztése, ami csak változók tárolásárahasználható az APC-vel azonos API-n keresztül: https://github.com/krakjoe/apcu●Az APC fejlesztése valószínűleg le fog lassulni, meg fog állni.
  • 11. 27/11Opcache● opcache.enable (default "1")● opcache.memory_consumption (default "64")● opcache.interned_strings_buffer (default "4")● opcache.max_accelerated_files (default "2000")● opcache.max_wasted_percentage (default "5")● opcache.use_cwd (default "1")● opcache.validate_timestamps (default "1")● opcache.revalidate_freq (default "2")● opcache.revalidate_path (default "0")● opcache.save_comments (default "1")● opcache.load_comments (default "1")● opcache.fast_shutdown (default "0")● opcache.enable_file_override (default "0")● opcache.optimization_level (default "0xffffffff")● opcache.inherited_hack (default "1")● opcache.blacklist_filename (default "")● opcache.max_file_size (default "0")● opcache.consistency_checks (default "0")● opcache.force_restart_timeout (default "180")● opcache.error_log (default "" which means stderr)● opcache.log_verbosity_level (default "1")● opcache.preferred_memory_model (default "")● opcache.protect_memory (default "0")● opcache.mmap_base (Windows-only)
  • 12. 27/12Egyszerűsített jelszó hash API
  • 13. 27/13Egyszerű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 a salt-ot és a cost-ot tartalmazhatja jelenleg.● algo PASSWORD_BCRYPT illetve PASSWORD_DEFAULT értékeket fogadja,ahol a bcrypt az alapértelmezett. A későbbi verziókban ez a lista bővülhet (pl.scrypt) illetve a default is változhat.
  • 14. 27/14Tömbök● array_column()– többdimenziós tömbből lehet vele visszakérni mindensorból egy megadott oszlophoz tartozó értékek listáját.● Egy Iterator key() függvényéből visszaadott tömb/object márhasználható a foreach fejlécben közvetlenül.● Foreach fejlécben a list() mostantól szabadon használható azaktuális iterációhoz tartozó elem kibontására.
  • 15. 27/15Config● sys_temp_dir– Alapértelmezett temp dir adható meg.– Ha ki van töltve, akkor ezt használja a php az OS specifikustalálgatás helyett.● intl.use_exceptions– Szabvány php hibák helyett kivételt dobjanak-e az intl funkciókhiba esetén.● mysqlnd.sha256_server_public_key– Mysql SHA256 auth támogatáshoz a szerver nyilvánoskulcsának helye.
  • 16. 27/16Biztonság● FILTER_VALIDATE_MAC, FILTER_SANITIZE_MAC● hash_pbkdf2()– hash függvény pbkdf2 alapokon, kötelezően meg kell adni ahasználni kívánt hash algot, egy salt-ot és egy iterációszámot.● openssl_pbkdf2()– ugyanezt tudja, van rá némi esély, hogy ez nem éri meg arelease-t.● A /e kapcsoló a preg_replace() hívásban (preg_replace_callbackjavasolt helyette).
  • 17. 27/17mysqli● mysqli_begin_transaction()● mysqli_savepoint()● mysqli_release_savepoint()
  • 18. 27/18gd● Összefésülésre került a GD bitbucket tárolós és a php repóban lévőverzió kódja.● Új függvények(illetve tartozik hozzájuk egy kupac konstans is):– imageflip()– imagecrop()– imagecropauto()– imagesetinterpolation()– imageaffine()– imageaffinematrixget()– imageaffinematrixconcat()– imagescale()
  • 19. 27/19curl● Új függvény: curl_file_create● Új osztály: CURLFile● Új konstans: CURLOPT_SAFE_UPLOAD● Fájlfeltöltés 5.5 előtt:curl_setopt($curl_handle, CURLOPT_POST, 1);$args[file] = @/path/to/file;curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args);● Fájlfeltöltés 5.5ben:curl_setopt($curl_handle, CURLOPT_POST, 1);$args[file] = new CurlFile(filename.png, image/png);curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args);● A régi működés kikapcsolható a CURLOPT_SAFE_UPLOAD
  • 20. 27/20intl● Uconverter osztály:– Karakterkódolások között lehet oda-visszakonvertálgatni szöveget.– mb_convert_encoding()-hez képest extrakéntmegadható, hogy megadható, hogy mi történjenaz alapból nem leképezhető karakterekkel.● rengeteg további intl/ICU okosítás(75 új függvény),cserébe ICU követelmény felkúszott >= 4.0-ra.
  • 21. 27/21date● Új DateTimeInterface interface.● Új DateTimeImmutable osztály– DateTime-mal szemben nem módosítja sajátmagát, csak visszatér a módosult példánnyal,● Mind a DateTime, mind a DateTimeImmutable aDateTimeInterface megvalósítása.
  • 22. 27/22sockets●Sendmsg(), recvmsg(), socket_cmsg_space()– kiegészítő adatokat lehet vele küldeni, fogadni(lásd konstansok).●IPV6_PKTINFO● IPV6_RECVPKTINFO● IPV6_HOPLIMIT● IPV6_TCLASS● IPV6_RECVTCLASS●SCM_RIGHTS●SCM_CREDENTIALS● SO_PASSCRED
  • 23. 27/2342● The answer to life, the universe and everything[0]● array(42 =>The answer to life, the universe and everything)[42]● Abszolút osztálynév feloldás a class konstans használatával:echo ClassName::class; // ANamespacedClassName● 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.● set_error_handler/set_exception_handler NULL callbackkel hívva visszaállítja a gyári handlert ésvisszatér az utoljára beállítottal.● boolval()● Az empty() mostantól kifejezések vizsgálatára is használható.● Systemtap támogatás, az 5.3-ban hozzáadott dtrace probe-ok mostantól systemtap-en keresztül iselérhetőek.● Az új Apache 2.4 handler támogatott lett windowson.● Max-Age attribútum minden php-ből kreált sütire.
  • 24. 27/24Ami felmerült, de végül kimaradt●Accessors– https://wiki.php.net/rfc/propertygetsetsyntax-v1.2●DateTime::__toString()– https://wiki.php.net/rfc/datetime_tostring●Escaper– https://wiki.php.net/rfc/escaper●Annotációk DocBlock alapokon– https://wiki.php.net/rfc/reflection_doccomment_annotations– https://wiki.php.net/rfc/annotations-in-docblock●Opcionális paraméterek default értékének használata a hívásnál– https://wiki.php.net/rfc/skipparams●Függvényhívás paraméterlista végén vessző elfogadása– https://wiki.php.net/rfc/trailing-comma-function-args● „assuming $this from incompatible context” ellenjavalttá tétele– https://wiki.php.net/rfc/incompat_ctx●(new Foo)->bar = baz– http://www.mail-archive.com/internals@lists.php.net/msg64194.html●„Pure-code” php fájlok– https://wiki.php.net/rfc/phpp● array_part()– https://wiki.php.net/rfc/array_part
  • 25. 27/25Ami kimaradt, de szerintem igény lenne rá● AST alapú parser– https://wiki.php.net/rfc/ast_based_parsing_compilation_process● Natív, teljes körű Unicode támogatás● Typehint skaláris típusokra is– A Fatal error-os formában nem valószínű hogy valaha is bekerül.● Kivétel alapú hibakezelés– Nem tudja kiváltani a jelenlegi infrastruktúrát, plusz nem illeszkedik a multiparadigmás imázsba.– https://github.com/ircmaxell/ErrorExceptions● Chainelhető user error/exception handlerek– Mint ahogy pl. most az spl autoloader működik.● Skalár objektek– https://github.com/nikic/scalar_objects● Thread kezelés– http://pecl.php.net/package/pthreads● PDO2
  • 26. 27/26Visszafelé nem(teljesen) kompatibilis változások● ext/mysql (ext/mysqli javasolt helyette)● mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() (mcrypt_generic/mdecrypt_generichasználható helyette).● Bugfix: unpack("a5", "str00") 5.5 előtt 3 hosszú stringet adott vissza, 5.5től a helyes 5 hosszú NULpaddolt stringet, a Z kapcsolóval elérhető a régi hibás viselkedés továbbra is.● A függvények, osztályok és konstans nevek belső case insensitive-ségének biztosítása mindig ASCIIszabályok szerint történik ezentúl (pl. török locale-lel voltak korábban problémák:https://bugs.php.net/bug.php?id=18556).● Windows XP és 2003 támogatása megszűnik.● php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(), zend_logo_guid() függvényekeltávolításra kerültek, helyettük data url-ek használata javasolt.● --with-curlwrappers configure kapcsoló és az ehhez tartozó experimental kód eltávolításra került.● @/path/to/file típusú curl fájlfeltöltés ellenjavalttá vált.● IntlDateFormatter::setTimeZoneID() és datefmt_set_timezone_id() ellenjavalttá vált. AIntlDateFormatter::setTimeZone() vagy a datefmt_set_timezone() használható helyette.
  • 27. 27/27Kérdések?

×