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 з модифікатором emigration55 deprecated.

Інше

Розширено empty() для виразів — прогоніть тести форм.


Підсумок

Опануйте генератори та password_*, завершіть міграцію з mysql, далі логічно перейти до 5.6 (варіадика, **).