a php 5.5 újdonságai

Download A PHP 5.5 újdonságai

If you can't read please download the document

Upload: ferenc-kovacs

Post on 25-Jun-2015

1.285 views

Category:

Technology


4 download

TRANSCRIPT

  • 1. 27/1APHP5.5jdonsgaiKovcs Ferenchttp://tyrael.hu/http://twitter.com/[email protected] @ 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 venknti kiadsok (minor vagy major verzi) 3 v tmogats a megjelenstl szmtva 2 vig hiba s biztonsgi javtsok +1 vig biztonsgi javtsok https://wiki.php.net/rfc/php53eol Az 5.5 megjelenst kveten az 5.3-hz mr csak abiztonsgi javtsok jnnek 1 vig. 4. 27/4Roadmap Az eredeti roadmap: https://wiki.php.net/todo/php55 Elmletileg janur 31 lett volna a beta1 (Feature Freeze). Gyakorlatilag mrcius 31 lett belle. A csszs egyik legnagyobb oka a Zend Opcache feltnse. Q1 helyett Q2 lesz a vgleges kiads idpontja a szksgesbeta/RC-k szmtl fggen. Teht az 5.3 EOLed lesz ~2014 Q2-tl. 5. 27/5Finally 6. 27/6Finally A finally minden esetben(siker, el nem kapottkivtel,return) meghvdik, kivve a fatlis hibkat. gy a legegyszerbb megoldani, hogy mindenesetben feltakartson maga utn a kdunk (tempfjlok trlse, lock elengedse, etc.). Egymsba gyazott try blokkok esetn bellrlkifel(fentrl lefel) halad sorrendben hvdnakmeg a finally-k. 7. 27/7Genertorok 8. 27/8Genertorok 1-1 sor lekrdezse belekerlhetne a ciklusba, de az csnya, nem rdekelminket honnan, vagy hogyan jn az adat, mi fel akarjuk dolgozni. getFilesFromFile() visszatrhetne egyben az egsz tmbbel, de azfeleslegesen emeln a peak memria hasznlatot, plusz nem biztos, hogymindig csak vges elemszmot tudnnk generlni. getFilesFromFile() visszatrhetne egy itertorral ami mr j, nem kellegyszerre sok memrit alloklni, s megvalsthat a vgtelen elemszmgenerlsa is de elg sok boilerplate kell hozz, plusz szembemegy a PHPmultiparadigms elveivel, ha csak gy lehet megoldani. 9. 27/9GenertorokA yield-et tartalmaz fggvny els hvsakor egy Generator pldnnyal tr vissza, amely egyIterator-t valst meg.A Generator osztly nem pldnyosthat manulisan.A visszakapott Generator bejrsa meghvja(folytatja) a fggvny futst a kvetkez yield-ig,amelynek az rtkvel visszatr.Ez a pingpong megy amg nem jn egy return; a Generatorbl, vagy el nem fogynak a yieldek,vagy abba nem hagyja a hv az iterlst, vagy nem jn egy a genertorban el nem kapottException. Yield dobhat kulcs => rtk prt, illetve mind rtk mind referencia szerint. A Generator pldny send metdusnak hvsval lehet adatot is kldeni a genertorfggvnynek, ez ugyangy lpteti az itercit s a fggvnytrzsben a yield visszatrsirtkeknt rkezik meg a kldtt adat.A Generator pldny throw metdusval lehet kivtelt is dobni kvlrl, amit ugyangy lpteti azitercit, ha a fggvnytrzsben elkapdik a kivtel, akkor a kvetkez elem jn vissza, ha nem,akkor a kivtel. 10. 27/10OpcacheA Zend az Optimizer+ nev fizets opcode cache-t tette nylt forrsv, s (alapblkikapcsoltan) be fog kerlni az 5.5-be core ext-knt. A core fejlesztk kztt van tbb jelenlegi/ex Zend alkalmazott, aki ismeri akdbzist, a kdnyits utn elg sokan kezdk el nzegetni, taln tbb aktvfejlesztje lesz, mint az APCnek.Sajnos a Zend stackben nem hasznlnak Thread Safe SAPI-t, szval TSkrnyezetben akad mg vele munka, de elmletileg dolgoznak az gyn.Mivel a core rsze, ezrt j esetben nem jhet ki gy j kiads, hogy nincs hozzvagy trtt az opcode cache tmogats (PHP 5.4 /o).Data Cache funkcit nem tartalmaz, az APC ezen rszt nem vltja ki,defolyamatban van egy kicsontozott APC fejlesztse, ami csak vltozk trolsrahasznlhat az APC-vel azonos API-n keresztl: https://github.com/krakjoe/apcuAz APC fejlesztse valsznleg 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/12EgyszerstettjelszhashAPI 13. 27/13EgyszerstettjelszhashAPI array password_get_info ( string $hash ) Visszaad egy tmbt: 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 rtkeket fogadja,ahol a bcrypt az alaprtelmezett. A ksbbi verzikban ez a lista bvlhet (pl.scrypt) illetve a default is vltozhat. 14. 27/14Tmbk array_column() tbbdimenzis tmbbl lehet vele visszakrni mindensorbl egy megadott oszlophoz tartoz rtkek listjt. Egy Iterator key() fggvnybl visszaadott tmb/object mrhasznlhat a foreach fejlcben kzvetlenl. Foreach fejlcben a list() mostantl szabadon hasznlhat azaktulis itercihoz tartoz elem kibontsra. 15. 27/15Config sys_temp_dir Alaprtelmezett temp dir adhat meg. Ha ki van tltve, akkor ezt hasznlja a php az OS specifikustallgats helyett. intl.use_exceptions Szabvny php hibk helyett kivtelt dobjanak-e az intl funkcikhiba esetn. mysqlnd.sha256_server_public_key Mysql SHA256 auth tmogatshoz a szerver nyilvnoskulcsnak helye. 16. 27/16Biztonsg FILTER_VALIDATE_MAC, FILTER_SANITIZE_MAC hash_pbkdf2() hash fggvny pbkdf2 alapokon, ktelezen meg kell adni ahasznlni kvnt hash algot, egy salt-ot s egy iterciszmot. openssl_pbkdf2() ugyanezt tudja, van r nmi esly, hogy ez nem ri meg arelease-t. A /e kapcsol a preg_replace() hvsban (preg_replace_callbackjavasolt helyette). 17. 27/17mysqli mysqli_begin_transaction() mysqli_savepoint() mysqli_release_savepoint() 18. 27/18gd sszefslsre kerlt a GD bitbucket trols s a php repban lvverzi kdja. j fggvnyek(illetve tartozik hozzjuk egy kupac konstans is): imageflip() imagecrop() imagecropauto() imagesetinterpolation() imageaffine() imageaffinematrixget() imageaffinematrixconcat() imagescale() 19. 27/19curl j fggvny: curl_file_create j osztly: CURLFile j konstans: CURLOPT_SAFE_UPLOAD Fjlfeltlts 5.5 eltt:curl_setopt($curl_handle, CURLOPT_POST, 1);$args[file] = @/path/to/file;curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args); Fjlfeltlts 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 rgi mkds kikapcsolhat a CURLOPT_SAFE_UPLOAD 20. 27/20intl Uconverter osztly: Karakterkdolsok kztt lehet oda-visszakonvertlgatni szveget. mb_convert_encoding()-hez kpest extrakntmegadhat, hogy megadhat, hogy mi trtnjenaz alapbl nem lekpezhet karakterekkel. rengeteg tovbbi intl/ICU okosts(75 j fggvny),cserbe ICU kvetelmny felkszott >= 4.0-ra. 21. 27/21date j DateTimeInterface interface. j DateTimeImmutable osztly DateTime-mal szemben nem mdostja sajtmagt, csak visszatr a mdosult pldnnyal, Mind a DateTime, mind a DateTimeImmutable aDateTimeInterface megvalstsa. 22. 27/22socketsSendmsg(), recvmsg(), socket_cmsg_space() kiegszt adatokat lehet vele kldeni, fogadni(lsd konstansok).IPV6_PKTINFO IPV6_RECVPKTINFO IPV6_HOPLIMIT IPV6_TCLASS IPV6_RECVTCLASSSCM_RIGHTSSCM_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] Abszolt osztlynv felolds a class konstans hasznlatval:echo ClassName::class; // ANamespacedClassName cli_get_process_title/cli_set_process_title: cli processzhez tartoz cm (ami ps kimenetben,ablakfejlcben, etc. ltszik) lekrdezhet s bellthat lesz minden nagyobb platformon. set_error_handler/set_exception_handler NULL callbackkel hvva visszalltja a gyri handlert svisszatr az utoljra belltottal. boolval() Az empty() mostantl kifejezsek vizsglatra is hasznlhat. Systemtap tmogats, az 5.3-ban hozzadott dtrace probe-ok mostantl systemtap-en keresztl iselrhetek. Az j Apache 2.4 handler tmogatott lett windowson. Max-Age attribtum minden php-bl krelt stire. 24. 27/24Amifelmerlt,devglkimaradtAccessors https://wiki.php.net/rfc/propertygetsetsyntax-v1.2DateTime::__toString() https://wiki.php.net/rfc/datetime_tostringEscaper https://wiki.php.net/rfc/escaperAnnotcik DocBlock alapokon https://wiki.php.net/rfc/reflection_doccomment_annotations https://wiki.php.net/rfc/annotations-in-docblockOpcionlis paramterek default rtknek hasznlata a hvsnl https://wiki.php.net/rfc/skipparamsFggvnyhvs paramterlista vgn vessz elfogadsa https://wiki.php.net/rfc/trailing-comma-function-args assuming $this from incompatible context ellenjavaltt ttele https://wiki.php.net/rfc/incompat_ctx(new Foo)->bar = baz http://www.mail-archive.com/[email protected]/msg64194.htmlPure-code php fjlok https://wiki.php.net/rfc/phpp array_part() https://wiki.php.net/rfc/array_part 25. 27/25Amikimaradt,deszerintemignylenner AST alap parser https://wiki.php.net/rfc/ast_based_parsing_compilation_process Natv, teljes kr Unicode tmogats Typehint skalris tpusokra is A Fatal error-os formban nem valszn hogy valaha is bekerl. Kivtel alap hibakezels Nem tudja kivltani a jelenlegi infrastruktrt, plusz nem illeszkedik a multiparadigms imzsba. https://github.com/ircmaxell/ErrorExceptions Chainelhet user error/exception handlerek Mint ahogy pl. most az spl autoloader mkdik. Skalr objektek https://github.com/nikic/scalar_objects Thread kezels http://pecl.php.net/package/pthreads PDO2 26. 27/26Visszafelnem(teljesen)kompatibilisvltozsok ext/mysql (ext/mysqli javasolt helyette) mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() (mcrypt_generic/mdecrypt_generichasznlhat helyette). Bugfix: unpack("a5", "str00") 5.5 eltt 3 hossz stringet adott vissza, 5.5tl a helyes 5 hossz NULpaddolt stringet, a Z kapcsolval elrhet a rgi hibs viselkeds tovbbra is. A fggvnyek, osztlyok s konstans nevek bels case insensitive-sgnek biztostsa mindig ASCIIszablyok szerint trtnik ezentl (pl. trk locale-lel voltak korbban problmk:https://bugs.php.net/bug.php?id=18556). Windows XP s 2003 tmogatsa megsznik. php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(), zend_logo_guid() fggvnyekeltvoltsra kerltek, helyettk data url-ek hasznlata javasolt. --with-curlwrappers configure kapcsol s az ehhez tartoz experimental kd eltvoltsra kerlt. @/path/to/file tpus curl fjlfeltlts ellenjavaltt vlt. IntlDateFormatter::setTimeZoneID() s datefmt_set_timezone_id() ellenjavaltt vlt. AIntlDateFormatter::setTimeZone() vagy a datefmt_set_timezone() hasznlhat helyette. 27. 27/27Krdsek?