PHP 5.5: Основни нововъведения
PHP 5.5 популяризира генератори с yield, добавя finally, въвежда API password_hash / password_verify, array_column() и ClassName::class. Често се доставя Zend OPcache — променя се производителността и начинът, по който новият код се вижда след деплой.
Съдържание
Генератори
function lines($path)
{
$fh = fopen($path, 'rb');
try {
while (($line = fgets($fh)) !== false) {
yield rtrim($line, "\r\n");
}
} finally {
fclose($fh);
}
}
finally
Изпълнява се винаги след try/catch, дори при return или изключение.
Пароли
$hash = password_hash($plain, PASSWORD_DEFAULT);
if (password_verify($plain, $hash) && password_needs_rehash($hash, PASSWORD_DEFAULT)) {
$hash = password_hash($plain, PASSWORD_DEFAULT);
}
Помощници
array_column() извлича колона от масив от редове; ::class дава низ с пълното име на класа.
OPcache
След промяна на файлове може да е нужен рестарт на PHP-FPM или изчистване на кеша.
Рецепти
Големи файлове обхождайте с yield, не зареждайте целия масив в памет. При логин прехеширайте с password_needs_rehash.
Обратна несъвместимост
migration55 incompatible: нюанси при foreach и list(); промени в обвивки около разширения.
Deprecated
mysql, preg_replace с e — migration55 deprecated.
Друго
Разширено empty() за изрази — пуснете тестове за формуляри.
Обобщение
Овладейте генератори и password_*, затворете mysql, после идва 5.6 с вариадика и **.