PHP 5.5: Головні нововведення
PHP 5.5 впроваджує генератори (yield), блок finally, API password_hash / password_verify / password_needs_rehash, допоміжні array_column() та ClassName::class. У багатьох збірках з’являється OPcache — змінюється швидкодія та те, як підхоплюються оновлення файлів після деплою.
Хаб: migration55.
Зміст
Генератори
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
Після релізу може знадобитися скидання кешу опкодів або перезапуск воркерів.
Рецепти
Великі файли читайте потоково через yield, а не завантажуйте цілком у пам’ять.
Зворотна несумісність
migration55 incompatible: нюанси foreach і list(); зміни в обгортках над розширеннями.
Deprecated
mysql, preg_replace з модифікатором e — migration55 deprecated.
Інше
Розширено empty() для виразів — прогоніть тести форм.
Підсумок
Опануйте генератори та password_*, завершіть міграцію з mysql, далі логічно перейти до 5.6 (варіадика, **).