Статьи

PHP 5.6 Конец бета

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. в производстве. А пока скачайте бета-версию и начните тестирование!