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 – ничего особенного не изменилось – разрабочики попытались исправить свои давнешние стратегические ошибки.
Tweet
Скакунов Александр
October 1st, 2007 at 3:11 pmВ целом большую часть я и так не юзал.
Поддержка юникода и АРС – это радует. Узнал недавно, что АРС используют, чтобы аяксом дергать прогресс аплода файла, удобно.
vadim
October 1st, 2007 at 3:13 pmЭто как?
vadim
October 1st, 2007 at 3:18 pmНашел уже: http://ua2.php.net/apc Смотреть начиная с apc.rfc1867.
Странно вообще что такая функциональность встроенна Opcodes кЭшер.
Скакунов Александр
October 1st, 2007 at 3:19 pmНапример, у тебя в ифрейм загружается файл. В это время:
1. Аяксом делается запрос к скрипту, который обращается к АРС.
2. Скрипт получает от АРС общий размер (total) и текущий размер (current) загружаемого файла.
3. Либо скрипт, либо аякс расчитывает процентовку закачки, которая отображается на прогресс-бар пользователю.
А как по-другому делают?
vadim
October 1st, 2007 at 3:22 pmСаня, процесс в общих чертах был и так ясен. Не знал просто что APC умеет выдавать информацию о состоянии загрузки.
Скакунов Александр
October 1st, 2007 at 3:27 pmОК.
В смысле?
vadim
October 1st, 2007 at 3:30 pmВ том смысле, что APC – это система кеширования байткода, и не совсем ясно каким образом он относится к загрузке файлов.
В итоге получается что он выполняет свою основную функциональность, а также “притянутый за уши” индикатор загрузки.
cj
October 25th, 2007 at 9:41 amSkinner
March 18th, 2008 at 1:41 pmИндикатор загрузки это Uploadprogress и к APC не имеет никакого отношения.
Vadim Voituk
March 18th, 2008 at 4:12 pmSkinner: Прочитайте внимательнее комментарии и поймете, что это 2 совершенно разных модуля, которые делают одно и тоже.
Skinner
March 19th, 2008 at 2:13 pmVadim Voituk: Вы хотите сказать что с помощью Uploadprogress можно кешировать компилированный код?
Vadim Voituk
March 19th, 2008 at 2:23 pmSkinner: Нет, я этого не хочу сказать. Мало того, меня подобная мысль даже не посещала.
В контексте обсуждения возможности следить за прогрессом upload-а, я утверждал что Uploadprogress предлагает альтернативную реализаицию фукционала, существующего в APC. Что в свою очередь опровергает ваше утверждение, приведенное в комментарии #9.
Skinner
March 19th, 2008 at 2:34 pmХм. Как ни странно, действительно умеет…