Сегодня 13 июля, воскресенье ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7281
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
RMCreative.ru - Блог
RMCreative.ru - Блог
Голосов: 1
Адрес блога: http://rmcreative.ru/feed/
Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL
 

Что нас ждёт в PHP 5.5

2012-10-16 06:01:08 (читать в оригинале)

PHP 5.5 планируется выпустить в Феврале-Марте 2013. Отвечать за релиз в этот раз будет Julien Pauli, который приедет на WebConf в ноябре.

Версия 5.5 будет обратно совместма с остальной линейкой 5.x, так что можно будет смело обновляться. Итак, интересности из транка, которые, возможно, попадут в 5.5.

foreachlist

Интересное добавление к синтаксису:

$users = array(
    array('Foo', 'Bar'),
    array('Baz', 'Qux');
);
 
// раскидываем массив в переменные
foreach ($users as $user) {
    list($firstName, $lastName) = $user;
    echo "First name: $firstName, last name: $lastName. ";
}
 
// а вот так можно будет в 5.5
foreach ($users as list($firstName, $lastName)) {
    echo "First name: $firstName, last name: $lastName. ";
}

generators

Генераторы — новый способ довольно сжато описывать эффективно работающие итераторы, используя минимум кода. Функция или метод, в котором встречается ключевое слово yield автоматически становится генератором:

function getLinesFromFile($fileName) {
    // на каждой итерации выполняем всё до первого yield
    if (!$fileHandle = fopen($fileName, 'r')) {
        return;
    }
 
    // 
    while (false !== $line = fgets($fileHandle)) {
        // то есть до сюда
        yield $line;
    }
 
    // а вот эта часть выполнится только когда не вызовется yield
    fclose($fileHandle);
}
 
// выполнения функции не происходит потому как внутри есть yield
$lines = getLinesFromFile($fileName);
 
foreach ($lines as $line) {
    // работаем с $line
}

Работает всё это довольно шустро.

hash_pbkdf2

Новая функция hash_pbkdf2 замедляет обычное хеширование (например, SHA-256) для того, чтобы сделать перебор достаточно трудоёмким занятием, которое может растянуться на десятилетия.

Данную тему я уже затрагивал.

Кстати, в документации к hash_pdkdf2 имеется замечание, что для паролей всё-таки лучше использовать crypt.

Упрощённый API для хеширования паролей

Так как хеширование паролей необходимо в большинстве приложений, разрабатываемых на PHP и при этом очень многие не понимают, как это сделать правильно, Anthony Ferrara, поработавший над RFC и реализацией, решил эту задачу упростить.

Вот так будет выглядеть сохранение пароля:

$password = "foo";
$hash = password_hash($password, PASSWORD_DEFAULT);
// записываем хеш в базу

А вот так его проверка:

// читаем хеш из базы
if (password_verify($password, $hash)) {
    // пароль верный
} else {
    // пароль не верный
}

Разыменование констант, строк и массивов

Можно будет так:

echo array(1, 2, 3)[0]; // 1
echo "foobar"[2]; // o
echo "foobar"["foo"][0] // f
 
echo [1,3,4][2]; // 4
 
echo ['a', 'b'][mt_rand(0, 1)]; // a или b

empty заработает с функциями

Это сильно упростит всем нам жизнь:

if(!empty($this->getPosts()) {
  // ...
}

Другие изменения (не факт, что все будут в 5.5)

  • Выкинули модификатор /e из preg_replace в пользу preg_replace_callback.
  • PHP 5.5 не будет работать на Windows XP и 2003.
  • Функция boolval. Аналог (bool).
  • Получение полного имени класса с namespace через FooBar::class.
  • Пропуск параметров функций.
  • Скалярный хинтинг для функций.
  • Свойства класса через геттеры и сеттеры.

Отдельно стоит отметить предложение улучшенной компиляции через построение AST. В 5.5 реализации точно не будет, но штука интересная.

Сейчас PHP компилируется по мере выполнения. Всё делается в один проход. В RFC предлагается перейти к двупроходной компиляции. Сначала парсер будет разбирать всё в дерево. Затем уже это дерево будет компилироваться. Посередине будет возможность засунуть разные хорошие оптимизации.

С одной стороны получаются дополнительные расходы на компиляцию, с другой, при использовании APC получается сильный выигрыш на более оптимальных инструкциях для Zend Engine.

Также данное изменение упростит код компилятора, что положительно скажется на дальнейшем развитии PHP.




 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.