PHP 5.5: Основни нововъведения

PHP 5.5 популяризира генератори с yield, добавя finally, въвежда API password_hash / password_verify, array_column() и ClassName::class. Често се доставя Zend 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

След промяна на файлове може да е нужен рестарт на PHP-FPM или изчистване на кеша.

Рецепти

Големи файлове обхождайте с yield, не зареждайте целия масив в памет. При логин прехеширайте с password_needs_rehash.

Обратна несъвместимост

migration55 incompatible: нюанси при foreach и list(); промени в обвивки около разширения.

Deprecated

mysql, preg_replace с emigration55 deprecated.

Друго

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


Обобщение

Овладейте генератори и password_*, затворете mysql, после идва 5.6 с вариадика и **.