PHP 5.4 alpha1 released

weregod

unserializer
28 июня зарелизили сабж.

После двух лет разработки началось альфа-тестирование новой ветки интерпретатора языка программирования PHP 5.4, в которой добавлены новые языковые конструкции и удалены устаревшие возможности. Ветка 5.4 не обеспечивает полную совместимость на уровне API и конфигурации, поэтому может потребоваться модификация приложений и серверных настроек (например, удалена поддержка Safe mode и register_globals). Представленная версия позиционируется только для начального тестирования и ознакомления с новыми возможностями. Разработка ветки PHP 5.4 еще не завершена, а API не стабилизирован. Через 4 недели планируется второй альфа-выпуск.

Разработка PHP 5.4 ведется в рамках нового регламента подготовки релизов, подразумевающего плановую подготовку выпусков через фиксированные промежутки времени с оформлением тестовых версий в процессе разработки. В соответствии с новым регламентом, значительные релизы PHP, содержащие новшества, будут выходить раз в год, а время поддержки новой ветки составит три года. Более подробно с особенностями нового регламента можно познакомиться в данном обзоре.

Из изменений можно отметить:

Возможности, удаленные по причине их устаревания:
Прекращение поддержки всех опций, связанных с режимом "Safe mode";
Прекращение поддержки синтаксиса "break/continue $var"
Удаление конфигурационных опций register_globals, define_syslog_variables, highlight.bg, session.bug_compat42, session.bug_compat_warn, y2k_compliance, allow_call_time_pass_reference и register_long_arrays;
Удаление функций session_is_regisitered(), session_registered() и session_unregister().
Увеличение производительности и оптимизация потребления памяти в Zend Engine. Работа по оптимизации проведена большая, улучшений очень много и они затрагивают различные части внутренностей PHP. Например, в тесте bench.php производительность PHP возросла на 19%, а в тесте micro_bench.php на 26%. При оценке скорости выполнения реальных приложений (c использованием акселератора APC) отмечается ускорение работы CMS typo3 на 6%, WordPress на 8%, drupal на 2%, xoops на 14% и scrum на 13%;
Поддержка языковой конструкции "Traits", предназначенной для организации повторного использования объектов без изменений существующих объектов;
Поддержка разыменования массивов (например, возвращающую массив функцию можно использовать как "func()['key']");
Интеграция поддержки системы динамической трассировки DTrace;
Перемещение встроенного расширения ext/sqlite во внешний каталог PECL (изменение не касается sqlite3, поддержка которого будет по прежнему встроена);
Для сборки PHP 5.4 требуется установка пакета autoconf 2.59 или более новой версии (рекомендуется Autoconf 2.60+). Расширены возможности сборки для unix-подобных систем, например, теперь можно одновременно собрать несколько бинарных SAPI из PHP и внешних SAPI-модулей;
Увеличена производительность парсинга запросов в FastCGI;
В $_SERVER['REQUEST_TIME'] теперь передается время с указанием микросекунд;
Изменено значение по умолчанию для опции "default_charset", вместо ISO-8859-1 теперь указано UTF-8;
По умолчанию активирован режим поддержки многобайтовых кодировок (php больше не нужно специально собирать с опцией "--enable-zend-multibyte"). Для выключения поддержки в php.ini добавлена директива zend.multibyte;
Возвращена поддержка замыкания "$this";
Добавлена возможность косвенного вызова методов через массив;
Добавлена поддержка использования ссылок на объекты при рекурсивном вызове serialize();
Добавлены новые функции: http_response_code(), header_register_callback();
Увеличена производительность функции unserialize();
Добавлена поддержка "stream metadata API: в класс stream_metadata();
Разнообразные улучшения отмечаются почти во всех стандартных расширениях;
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
кто-нибудь может объяснить простым языком, что такое traits ?
 

craz

Нестандартное звание
я простым языком не могу объяснить какие такие пользователи...
хабра
Это альфа-релиз для подталкивания пользователей к выявлению ошибок,
кто пользователь пхп?????
 

tz-lom

Продвинутый новичок
кто пользователь пхп?????
я
кто-нибудь может объяснить простым языком, что такое traits ?
это способ воткнуть метод в свой класс не прибегая к наследованию, при этом метод будет видеть protected и private поля
 

AmdY

Пью пиво
Команда форума
grigori
не совсем, пачингом можно переопределять фичи, а это только для добавления. клёвая штука, которая ломает архитектурую

на самом деле очень приятен связанный с ними патч, который позволяет использовать $this в замыканиях.
 

tz-lom

Продвинутый новичок
AmdY
спорный момент ломает или нет,интерфейсы дополнение через трейт понимают,а в самом трейте можно объявить абстрактные методы, так что если не пользоваться точечным импортом методов то можно нормально описать точки слияния с трейтом и ввести нужные ограничения
так же - никакой магии рантайма, а это большая головная боль нежели внимательно посмотреть что подключено
 
  • Like
Реакции: AmdY

AmdY

Пью пиво
Команда форума
а, да, их нельзя сравнивать с миксинами, потому что не рантайм. надо посмотреть годик, а потом определиться с вердиктом.
 

shelestov

я тут часто
Собственно ничего в релизе не зацепило.
В traits вижу только еще одну возможность для начинающего и не совсем прогера напрочь убить и запутать модель приложения.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Кхм, что-то мне кажется traits лишним. И так дебажить чужой код подчас тяжело, а тут будет полный полярный лис =\

Надо будет у себя собрать, пощупать все.
 

AmdY

Пью пиво
Команда форума
c0dex
третий не лишний, третий - запасной. не обязательно же пользоваться ими повсеместно. костыли заменяющие трайтсы дебажить гораздо сложнее.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
AmdY
Лишний он потому, что если неумело его подавать и использовать, он вызовет очень тяжелые последствия, в виде головной боли. Как goto)))
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
не, traits не лишний совсем
с ним отлично решаются некоторые проблемы с коллекциями объектов

а typehint скаляров уже опять не будет?
 

AmdY

Пью пиво
Команда форума
grigori
в описании news не нашёл, но помнится была новость о коммите сего патча.
 

axel-84

Новичок
А по моему штука (traits) наиполезнейшая. Надо только правильно её употребить
 

fixxxer

К.О.
Партнер клуба
А толку от него в таком виде? В реальном приложении тупой маппинг $script_filename = $document_root . $request_uri почти никогда не нужен. А если очень хочется "встроенный" вебсервер можно и на pecl/libevent изобразить.

UPD: я буду читать документацию до конца! с роутером хоть что-то, но опять же, с одной деткой разве что только для development, что смысла не имеет, ибо development делается с тем же вебсервером, который будет на проде. Надо было на основе fpm sapi делать :)
 
Сверху