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
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