Most significant PHP 6 changes

Рубрика: Development | 30 September 2007, 10:08 | Vadim Voituk

Ещё не многие успели переехать на PHP 5-й версии, как пошли разговор о том, что же включать в 6-ку.

Наряду с набором новых модулей, мигрировавших из PECL, ожидается некоторые изменения связанные с обратной совместимостью. И о них, как мне кажется, стоит знать заранее:

  • Устранены опции register_globals, safe_mode и magic_quotes_gpc, magic_quotes
    Достаточно значимое изменение, в равной степени касающееся безопасности и читаемости кода
  • Интегрирован Alternative PHP Cache (разработка Расмуса Летфорда)
    APC дает возможность кешировать код приложения в виде байткода и при повторном запуске не тратить драгоценные секунды на разбор и компилирования исходного кода приложения.
    Решение довольно спорное, т.к. попахивает монопольным “пересаживаением” пользователей с альтернативных продуктов (eAccelerator, Zend Optimizer), что влечет за собой усложнение процесса миграции.
  • E_STRICT теперь будет включана в E_ALL
    Врезультате обрублен ещё один балласт совместимости PHP4 VS PHP5
  • Устранен доступ к символу строки с помощью оператора {}. Останентся только array-подобный []
    Не совсем понятно как будет на это реагировать интерпретатор. Если “молча проглатывать” то отладка старого кода обещает стать довольно занятным делом :)
  • Устранена поддержка ограничивающих тэгов в ASP-стиле: <% и %>
    Никогда не видел чтоб кто-то ими пользовался
  • Улучшена поддержка UNICODE
    Собственно не прошло и 15ти лет :) На мой взгляд самое важное улучшение, позволяющее стандартными функицями работать с UNICODE строками. Обратной стороной медали является понижение их производительности.
  • Среди других менее значимых изменений:
    • “var” будет синонимом “public” без генерации E_STRICT warning-а (наш ответ @property в Java7 и старых версиях Groovy)
    • Прекращена поддержка модулей GD1 и FreeType1
    • FastCGI режим теперь всегда включен
    • Устранены переменные среды HTTP_*_VARS
    • XMLReader и XMLWriter теперь интегрированы в ядро
    • Добавлена поддержка 64-битных integers (21 век как никак)
    • Улучшен тернарный оператор: $myvar = $_POST[’myvar’] ?: ‘myvalue’; – полный аналог Elvis operator в Groovy
    • Добавлена поддержка многомерных массивов в foreach-цикле: foreach($a as $k=>list($b,$c));

Как сразу заметят скептики и “нелюбители” PHP – ничего особенного не изменилось – разрабочики попытались исправить свои давнешние стратегические ошибки.

Комментариев: 13

13 Responses to “Most significant PHP 6 changes”

Комментарии:

  1. Скакунов Александр

    В целом большую часть я и так не юзал.
    Поддержка юникода и АРС – это радует. Узнал недавно, что АРС используют, чтобы аяксом дергать прогресс аплода файла, удобно.

  2. vadim

    АРС используют, чтобы аяксом дергать прогресс аплода файла

    Это как?

  3. vadim

    Нашел уже: http://ua2.php.net/apc Смотреть начиная с apc.rfc1867.
    Странно вообще что такая функциональность встроенна Opcodes кЭшер.

  4. Скакунов Александр

    Например, у тебя в ифрейм загружается файл. В это время:

    1. Аяксом делается запрос к скрипту, который обращается к АРС.
    2. Скрипт получает от АРС общий размер (total) и текущий размер (current) загружаемого файла.
    3. Либо скрипт, либо аякс расчитывает процентовку закачки, которая отображается на прогресс-бар пользователю.

    А как по-другому делают?

  5. vadim

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

  6. Скакунов Александр

    ОК.

    Странно вообще что такая функциональность встроенна Opcodes кЭшер

    В смысле?

  7. vadim

    В том смысле, что APC – это система кеширования байткода, и не совсем ясно каким образом он относится к загрузке файлов.
    В итоге получается что он выполняет свою основную функциональность, а также “притянутый за уши” индикатор загрузки.

  8. cj

  9. Skinner

    Индикатор загрузки это Uploadprogress и к APC не имеет никакого отношения.

  10. Vadim Voituk

    Skinner: Прочитайте внимательнее комментарии и поймете, что это 2 совершенно разных модуля, которые делают одно и тоже.

  11. Skinner

    Vadim Voituk: Вы хотите сказать что с помощью Uploadprogress можно кешировать компилированный код?

  12. Vadim Voituk

    Skinner: Нет, я этого не хочу сказать. Мало того, меня подобная мысль даже не посещала.

    В контексте обсуждения возможности следить за прогрессом upload-а, я утверждал что Uploadprogress предлагает альтернативную реализаицию фукционала, существующего в APC. Что в свою очередь опровергает ваше утверждение, приведенное в комментарии #9.

  13. Skinner

    Хм. Как ни странно, действительно умеет…

Leave a Reply