5 июня 2014 года группа PHP объявила о четвертой и последней бета-версии 5.6. Эта веха завершает бета-программу и запускает программу RC (в настоящее время запланированную на 19 июня), которая теперь будет сосредоточена исключительно на том, чтобы убедиться, что версия достаточно стабильна для выпуска. Как обычно в бета-программе, никаких новых функций не было, начиная с бета-версии 1 — все выпуски были только с исправлениями и исправлениями.
изменения
Около пяти месяцев назад мы опубликовали список новых функций 5.6, и с тех пор группа PHP создала более доступную сводку изменений, чем та, которую можно увидеть в загадочных журналах изменений. Этот список, также называемый руководством по миграции 5.6, является уже очень полезной в процессе разработки и содержит простую демонстрацию каждой новой важной функции — вы можете проверить ее здесь .
Если вам интересно увидеть все исправления ошибок в бета-версиях, вы можете прочитать список изменений на Github.
Вещи, которые мы не рассмотрели в нашем оригинальном посте, но которые были добавлены в это время:
Возведение
Короче говоря, «возведение в степень через **» — это оператор, который позволяет легко вычислить число в степени другого числа. Тем не менее, порядок выполнения может быть нелогичным для некоторых. Пример гласит:
$a = 2 ** 3 ; // $a = 8, ie 2^3 $b = 2 ** 3 ** 2 ; // $b is 512
Большинство людей, плохо знакомых с оператором экспоненты, примут операции второй строки, которые группируются так:
( 2 ** 3 )** 2
который сводится к 8**2
что составляет 64, а не 512. Однако здесь экспоненциальный оператор использует следующее предпочтение:
2 **( 3 ** 2 )
который сводится к 2**9
, а это 512. Таким образом, оператор экспоненты выполняется справа налево , как это имеет место в других языках (например, Python).
UTF-8 по умолчанию
Кодировка символов по умолчанию была установлена в UTF-8 и использует ini setting / default_charset
default / function / function.
В эпоху широкой аудитории очень важно иметь поддержку UTF-8. По умолчанию UTF-8 пропускает несколько шагов, которые разработчики должны были сделать с mbstring и iconv ранее (теперь не рекомендуется), чтобы поддерживать не только чтение и запись точных данных базы данных UTF-8 (вам все еще нужно настроить базу данных для UTF-8, поскольку он не имеет ничего общего с PHP), но также способен кодировать систему с локальной кодировкой по умолчанию и правильно отображать веб-страницу в браузере. Благодаря этому больше нет необходимости устанавливать default_charset
в настройках ini — он устанавливается сразу после установки PHP.
php: // вход многоразовый
Одна деталь, которую мы не упомянули в последнем посте, заключается в том, что ввод php: // теперь можно использовать повторно — вопреки тому, что написано на странице документации . Это означает, что вы можете читать его несколько раз, и он всегда считывает одни и те же данные, что приводит к значительному сокращению использования памяти .
Перегрузка оператора GMP
GMP, библиотека, которую мы кратко рассмотрели ранее , теперь поддерживает перегрузку операторов . Раньше вам приходилось использовать функции gmp_ *, например, для добавления двух объектов / ресурсов GMP вместе (например, gmp_add
) — теперь вы можете использовать более простые выражения, такие как +
, как если бы вы использовали обычные числа.
Мы ищем подробные руководства по GMP и примеры использования в реальных условиях, поэтому, если вы хотите внести свой вклад, сообщите нам .
Обновления безопасности
Была добавлена функция hash_equals () , был введен алгоритм хеширования gost-crypto и были реализованы различные улучшения SSL / TLS .
Мы не будем вдаваться в подробности — они оба выходят за рамки этого краткого обзора и достаточно сложны, чтобы оправдать их собственный пост (хотите написать? Дайте мне знать ), но вы можете прочитать подробности на их ссылки.
pgsql async
Pgsql , расширение для взаимодействия PHP с базой данных PostgreSQL, теперь поддерживает асинхронные операции, присоединяясь к MySQL в этом отношении. Асинхронность может быть не совсем такой, как можно предположить , поэтому некоторые эксперименты оправданы, прежде чем верить в эти операции, но, тем не менее, приятно знать, что они есть.
Вы можете увидеть полные примеры использования PostgreSQL асинхронно в тестах .
Другие изменения
Эти новые функции — не единственное, о чем вы должны помнить — в новых документах есть несколько очень удобных разделов, которые помогут вам правильно переходить.
БК перерывы
Список « Обратно несовместимые изменения» расскажет вам обо всех областях, в которых ваши старые приложения не будут работать, если они использовались так же, как они использовались до версии 5.6. Некоторые из них:
- Ресурсы GMP теперь являются объектами, которые нарушат предыдущее использование
is_resource
- Mcrypt требует действительных ключей и IVs
- json_decode более строг в отношении верхнего / нижнего регистра для «true», «false» и «null»
- и более
Устаревшие Особенности
На странице устаревших функций перечислены все функции, которые теперь будут вызывать ошибку E_DEPRECATED в вашем коде. В этой версии это вызовы из несовместимого контекста, $HTTP_RAW_POST_DATA
и always_populate_raw_post_data
, но также следует помнить о ранее устаревших функциях — в частности, о mysql_*
расширения mysql
, которое теперь официально устарело полностью и не должно не будет использоваться.
Измененные функции
Список измененных функций опишет, каким образом изменились определенные функции по сравнению с их итерацией в предыдущей версии. В частности, это функция crypt
которая теперь выдает уведомление, если вы опустите солт-параметр, источник mcrypt_create_iv()
который по умолчанию теперь MCRYPT_DEV_URANDOM
, некоторые функции PostgreSQL больше не являются экспериментальными и многое другое .
Новые функции
Как и на новой странице функций, на новой странице функций перечислены все новые функции ядра и расширения, которые вы можете использовать. Например, возможность установить пароль для Zip-архива, о котором мы упоминали в последнем посте о новых функциях, упоминается на этой странице.
OpenSSL изменения
Изменений OpenSSL в этом выпуске было так много, что они гарантировали свою собственную отдельную страницу: http://docs.php.net/manual/en/migration56.openssl.php
Эта страница содержит все: от инструкций по замене сертификатов и отпечатков пальцев до SPKI и многое другое. Если вы любитель безопасности, вам предлагается прочитать это внимательно, и после того, как вы это сделаете, вы должны написать для нас подробное объяснение 🙂 Дайте нам знать, если вы можете сделать эти знания более доступными глаза в стиле, подходящем для более широкой аудитории.
Другие изменения и глобальные константы
На последних двух страницах представлены другие изменения в расширениях, которые не вписываются ни в одну другую категорию, и исчерпывающий список доступных новых глобальных констант — хотя и без подробного объяснения.
Вывод
Если вы переходите с любой другой предыдущей версии PHP на более новую, обратите внимание на руководства по миграции, доступные для всех таких переходов: http://docs.php.net/manual/en/appendices.php
Эти руководства будут охватывать все основные и второстепенные различия версий, о которых вам следует знать, и помогут вам подготовить вашу среду к возможному переходу на новейшие и лучшие версии.
Конец бета для 5.6. знаменует собой новую важную веху в сообществе PHP. Несколько важных новых функций ждут нас, когда мы перейдем к этой новой версии, и разработчики ядра призывают всех тестировать эту версию и сообщать о любых проблемах, с которыми они могут столкнуться. Следующие несколько месяцев будут посвящены исключительно версиям Release Candidate, а с самой следующей версией (запланированной на 19 июня) можно с уверенностью сказать, что вы можете начать тестирование 5.6. в производстве. А пока скачайте бета-версию и начните тестирование!