Какую версию PHP выбрать?
Но в ней есть пункт меню «Upgrade php and mysql versions», который предлагает обновить до PHP 5.6.
Интересно,
какую версию рекомендует Битрикс? Это сейчас экспериментальная опция?
Для чего её сделали? Только недавно 5.3 у нас была.
Мне боязно обновлять. Мне за код сайта не страшно, а просто вдруг сервер заглючит, начнет зависать. Можно ли будет вернуть предыдущую PHP?
Сообщений: 2764 Баллов: 449 Регистрация: 20.04.2008
АКРИТ Веб-студия
01.11.2015 13:04:20
отката нет
у меня все работает норм после обновления и поднятия версий
но сайт сайту рознь.
что мешает проверить на тестовой ВМ все?
недавно сами все просили сделать актуальные версии, сделали, пользуйтесь и радуйтесь, в последнем обновлении много глюков поправили что радует.
Веб-студия АКРИТ Увеличьте продажи трансформировав сайт в сеть торговых точек в интернете
Администратор
Сообщений: 1233 Баллов: 106 Регистрация: 27.11.2007
02.11.2015 13:07:36
При обновлении машины до 5.1.4 версия php не меняется, до php 5.6 можно поднять чз меню машины.
Если нужна версия php 5.6 и стоит ниже 5.4, то сначала нужно обновить до 5.4, а потом уже будет доступно обновление до 5.6.
Если ставится машина 5.1.4 с нуля, то там уже сразу версия php 5.6.
Правильно сказали выше — в подобных случаях всегда нужен бекап и обновляться нужно не на бою, а сначала протестировать на копии сайта.
Сообщений: 2764 Баллов: 449 Регистрация: 20.04.2008
АКРИТ Веб-студия
02.11.2015 13:17:10
| Цитата |
|---|
| Александр Панишев написал: у меня все работает норм после обновления и поднятия версий |
придется взять слова обратно, после нескольких дней стабильной работы вдруг отвалились рассылки, при этом БУС не обновлялся в настройки никто не лазил, сообщения о заказах приходят, а вот рассылки перестали отправляться при этом тест системы начал ругаться
Отправка почты — Ошибка! Не работает
Отправка почтового сообщения больше 64Кб — Ошибка! Не работает
— у кого то подобное проявилось?
Веб-студия АКРИТ Увеличьте продажи трансформировав сайт в сеть торговых точек в интернете
Администратор
Сообщений: 1233 Баллов: 106 Регистрация: 27.11.2007
02.11.2015 13:28:33
Александр Панишев, обратитесь в Техподдержку, будут разбираться.
Страницы: 1
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507
© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Переход на PHP 8.х в Битрикс управление сайтом и коробочных версиях Битрикс24
В административном интерфейсе коробочных версий продуктов «1С-Битрикс» вы могли заметить такое уведомление: С 01.02.2023 будет ограничена поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая версии PHP – 8.1 или выше. Вы используете версию PHP 7.4.33. Пожалуйста, запланируйте обновление PHP или обратитесь в техническую поддержку вашего хостинга.
Почему важно обновить PHP
Версия PHP 7.х объявлена устаревшей и больше не поддерживается, для неё не выпускаются исправления функциональных ошибок и ошибок безопасности. Использование версий PHP ниже 8 крайне не рекомендовано, т.к. сайты с версиями ниже 8 теперь становятся мишенью злоумышленников.
Вы не сможете установить обновления коробочных версий продуктов «1С-Битрикс» для исправления ошибок и получения нового функционала, пока не обновите PHP до минимальной версии 8.0 или рекомендованной 8.1 в своем серверном окружении.
Переход на обновление PHP до минимальной версии 8.0 можно запланировать и перейти с минимальными потерями и/или простоями в работе сайта.
Риски при обновлении версии PHP до 8.х
- Ядро проекта — это сам продукт Битрикс. за ошибки и несовместимости отвечает компания Битрикс. На момент написания статьи ядро битрикса стабилизировано в работе на версии php 8.x
- Сторонние модули, установление из маркетплейса. За эти модули отвечают их авторы, часть решений еще не переведено для совместимости работы на php8 на момент написания статьи
- И наконец, код конкретного проекта
Во всех этих инструментах заложен потенциальный риск перехода на версию 8.x, и если в ядре проекта он минимизирован самим продуктом Битрикс и его тех.поддержкой, то в сторонних модулях могут возникнуть проблемы (например, закончилась лицензия стороннего модуля и для получения обновлений этого модуля нужно продлить лицензию). А что касается конкретного кода отдельного проекта — за него отвечает специалист, технически ведущий данный проект. Таким специалистом нередко является владелец сайта, в этом случае при остуствии соотвествующей компетенции вы можете обратиться к нам.
Наша тех.поддержка производит переход на версию php8, собирая все это воедино и интегрируя все эти три сущности пока проект не заработает на php8 без ошибок.
Как обновить PHP
Обновление версии PHP необходимо произвести поэтапно.
Очень желательно провести эту операцию на тестовой площадке, т.к. можно заранее внести исправления в код, чтобы он работал и на версии php8 и на более низких версиях языка, а также понять, какие из модулей вызывают ошибки и требуют либо обновления, либо их удаления, либо исправления обок в коде. Однако такая предварительная «разведка» занимает больше времени, соответственно, и услуга по переходу на новую версию php8 будет стоить дороже.
Можно проводить обновления и на уже работающем проекте («в бою») без предварительной проверки, но какой бы способ не оказался оптимальным, в любом случае сперва нужно выполнить резервное копирование.
Для обновления нужно обратиться к вашему системному администратору или в техподдержку вашего хостинга, и скорее всего вам потребуется разработчик проекта для исправления ошибок в коде для нового окружения php8.
- Обязательно создайте резервную копию вашей установки. Это может быть как резервная копия средствами продукта, так и полностью всего сервера, например виртуальной машины VMBitrix.
- Обновите ядро и все модули продукта до последних доступных версий в разделе Настройки > Marketplace > Обновление платформы.

- Обновите все сторонние решения из Маркетплейса до последних доступных версий в разделе Настройки > Marketplace > Обновление решений.

- Обновите версию PHP до минимальной 8.0 или рекомендованной 8.1 на своем сервере. Если вы используете виртуальную машину VMBitrix, то обновить PHP можно через меню VMBitrix: 1. Manage servers in the pool — 8. Update PHP and MySQL. Подробнее читайте в отдельном курсе.
Куда обращаться в случае ошибок при обновлении версии PHP до 8.х
- Если после обновлений PHP появятся ошибки в работе стандартных модулей продуктов «1С-Битрикс», то обратитесь в Поддержку24. Также по модулям из Маркетплейса, в названия которых содержатся bitrix.* , нужно обращаться в Поддержку24, например:
bitrix.eshop bitrix.sitecommunity bitrix.sitecorporate bitrix.siteinfoportal bitrix.sitepersonal bitrix.learningtemplates
Также вы можете обратиться и в нашу тех.поддержку, мы производим исправление ошибок для окружения php 8, в том числе и в сторонних модулях.
Примеры частых ошибок и их решения
Возможные причины ошибок после обновления до PHP 8.х:
- До перехода на PHP 8.х не было обновлено ядро и все модули продукта до последних доступных версий в разделе Настройки > Marketplace > Обновление платформы.
- До перехода на PHP 8.х не были уставлены обновления сторонних решений (они в названии имеют точку) на странице Marketplace > Обновление решений.
- Разработчик не обновил модуль для поддержки PHP 8.
Основные действия по исправлению ошибок после обновления PHP до 8.х:
- Вернуться на предыдущую версию PHP 7.x, когда все работало, обновить компоненты системы и сторонние модули, а затем повторно обновить версию PHP до 8.х.
- Если предыдущие действия не исправили ошибки, то обратиться к разработчику модуля – смотрите раздел выше Куда обращаться в случае ошибок.
- Временно отключить модуль с ошибкой, переместив его из директории /bitrix/modules .
- Удалить стороннее решение с ошибкой.
Стоить отметить, что в примерах даны лишь решения ошибок для конкретного модуля. Каждая ошибка должна рассматриваться разработчиком индивидуально.
Примеры ошибок в коде после обновления до PHP 8.х
Версия php8 более строго типизированная и сигнатуры функций языка не терпят передачу в них других типов переменных (в отличие от предыдущих версий php). Чаще всего проблемы с типами возникают в шаблонах компонент (т.е. в коде конкретного проекта, см. пункт про риски)
Здесь приведены наиболее часто встречающиеся ошибки. Эта часть статьи предназначена больше техническим специалистам.
Первым пунктом мы рекомендуем включить логирование ошибок, а также их вывод на экран. Для анализа проекта на ошибки после запуска в случае логов и оперативного исправления в случае их вывода на экран.
Подключиться по FTP/SFTP или зайти в панель хостинга, включить вывод ошибок в файле /bitrix/.settings.php :
'debug' => true,
И включить логирование ошибок:
'log' => array( 'settings' => array( 'file' => '/home/bitrix/__php_error.log', 'log_size' => 1000000, ), ),
Типичная распростаненная ошибка — это вызов события или любого другого метода, не объявленного статическим, через двойное двоеточие (как статический).
Non-static method Super\Functions\CSuperModRep::checkBack() cannot be called statical
[TypeError] call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COMP\BXE\EventHandlers::AdminContextMenuShow() cannot be called statically (0).
Исправление в общем случае будет таким: в коде нужно правильно объявить статический метод:
Версии PHP: зачем их обновлять и чем они различаются

Почти 80% всех существующих сайтов, по данным W3Techs, работают на базе языка программирования PHP. Значительную их часть составляют сайты, созданные с помощью WordPress и других популярных CMS. Однако, несмотря на такую распространнёность, не все владельцы сайтов знают о необходимости переходить с устаревших версий PHP на более актуальные. Что отражается на качестве работы сайтов.
Кратко о версиях PHP
Какие версии PHP считаются актуальными, а какие — устаревшими? Чтобы разобраться в этом, рассмотрим этапы жизненного цикла версий этого языка:
- Релиз. Выпускается новая версия PHP, которая прошла все этапы предварительного тестирования и подходит для использования в «боевых условиях».
- Активная поддержка. В течение двух лет после релиза версия продолжает совершенствоваться. Выходят регулярные обновления, вносятся корректировки и исправляются баги. Обеспечивается полная безопасность версии.
- Минимальная поддержка. Ровно через два года после релиза работа по развитию версии прекращается. В течение следующего года происходят только критические обновления, касающиеся серьёзных угроз безопасности.
- Завершение жизненного цикла. Через год критических обновлений защиты версия перестаёт поддерживаться полностью. Однако ей можно продолжать пользоваться, но уже на свой страх и риск.
На момент публикации этого материала продолжают поддерживаться три версии PHP:
- 7.4 (дата релиза — 28 ноября 2019 года, самая актуальная версия);
- 7.3 (дата релиза — 6 декабря 2018 года, активная поддержка подходит к концу);
- 7.2 (дата релиза — 30 ноября 2017, активно не поддерживается, важные обновления безопасности скоро перестанут выходить).
Версии 7.1, 7.0 и все версии PHP 5 больше не обновляются. А уже в конце 2020 года самой актуальной станет версия 8.0.
А что насчёт PHP 6? Если вы не знаете, почему шестые версии здесь не упоминаются, то сейчас поясним.
PHP 6: строили, строили, но не построили
На разработку версии 6.0 было потрачено немало времени. Предполагалось, что самым важным нововведением в ней станет поддержка символов Юникода, благодаря которой возможности языка были бы расширены. Однако разработчики PHP 6 столкнулись со множеством трудностей, что вынудило их постепенно отказаться сначала от внедрения Юникода, а затем и вообще от запуска версии 6.0.
Пока шла работа над PHP 6, на эту тему было выпущено немало статей и книг. И представление о PHP 6 как о версиях языка с внедрённым Юникодом уже успело устояться в IT-сообществе. Поэтому новому поколению языка, пришедшему на смену PHP 5, было решено присвоить номер 7.
PHP 7: обновление, которое ждали больше 10 лет
Первая версия PHP 7 была представлена ещё в конце 2015 года, но до сих пор почти половина сайтов в мире, по информации WTechs, не перешли на PHP 7 и остаются на PHP 5. Каких возможностей лишены те, кто всё ещё не обновился?
Версия 7.0 основывалась на новой технологии phpng — PHP Next Generation, «Следующее поколение PHP». Она создавалась с целью увеличить производительность языка без снижения совместимости. В реальной практике PHP 7 оказался примерно в 2 раза быстрее PHP 5, а разница в производительности на синтетическом тесте bench.php составила вовсе 14 раз.
С заботой о пользователях мобильных гаджетов разработчики также поработали над исполнением движка и уменьшили потребление памяти при работе PHP. Также с помощью Abstract syntax tree (AST) операционный код стал более производительным. И в целом код на PHP 7 стал чище, понятнее и удобнее.
Помимо внедрения нововведений, в версии 7.0 изменили или вовсе убрали устаревшую и ненужную функциональность. С одной стороны, это несколько нарушило совместимость языка с ранее созданным и необновлённым ПО. Но с другой, принятые меры позволили сделать настоящий прорыв в развитии PHP.
PHP 8: взгляд в будущее
Версия 8.0 активно разрабатывается в данный момент, но о ней уже кое-что известно. Планируется, что в новейших версиях PHP будет генерироваться меньше кода. Для этого будет использоваться технология JIT (Just in Time). С её помощью при выполнении приложения весь код будет не компилироваться заново, а частично заимствоваться из уже скомпилированных версий.
Компиляции станет меньше и благодаря технологии FFI (Foreign Function Interface), которая упрощает вызов функций, написанных на разных компилируемых языках программирования. Благодаря JIT и FFI производительность PHP 8 должна ощутимо повыситься по сравнению с PHP 7.
Релиз первой альфа-версии 8.0 намечен на лето этого года. Затем традиционно будут представлены несколько альфа- и бета-версий, а также релизов-кандидатов, после чего 3 декабря 2020 года ожидается выпуск финального варианта.
Кратко об обновлении PHP
Какую версию PHP лучше всего использовать? Конечно же, самую актуальную на данный момент. Тогда вы всегда будете получать:
- потенциал для роста производительности сайта;
- надёжную защиту от вредоносных атак, использующих уязвимости в PHP;
- самый широких выбор ПО и плагинов, совместимых с сайтом.
О работе с PHP на VPS мы пока говорить не будем, так как для этого нужен отдельный материал. Поэтому дальше мы дадим рекомендации пользователям виртуального и специализированного хостинга.
Узнайте, какая версия PHP используется на вашем сайте. Эта информация доступна в настройках веб-сервера: например, на хостинге «Джино» они расположены здесь). Владельцы сайтов на WordPress могут увидеть текущую версию PHP в панели администратора, в разделе Инструменты / Здоровье сайта / Информация. Также вы можете написать этот скрипт, разместить его в файлах сайта и обратиться к нему из браузера:
В результате будет показана информация о версии.
Если ваша текущая версия PHP не входит в число поддерживаемых, взвесьте все «за» и «против» перед обновлением. Ведь чем старее скрипты вашего сайта, тем сложнее может быть перейти на поддерживаемую версию PHP. Тем, кто готов обновиться, нужно сделать следующее:
- Убедитесь, что у вас сохранена свежая резервная копия файлов сайта.
- Проверьте совместимость используемого ПО, фреймворков, библиотек, плагинов с выбранной вами версией PHP. Если что-то из этого не совместимо с ней, убирайте и заменяйте на более современные аналоги.
- Измените версию PHP на хостинге, через настройки сервера в контрольной панели или через запрос в техподдержку.
- После обновления протестируйте все функции сайта, при тестировании проверяйте лог на предмет «Fatal error» и других ошибок, которых раньше не было. Если все функции работают, а на страницах сайта появляются предупреждения PHP — отключите отображение ошибок.
- Если после обновления возникли серьёзные нарушения в работе сайта, верните старую версию PHP. Разберитесь в проблемах сами или обратитесь за помощью к специалистам.
Чтобы переход на новую версию PHP никогда не составлял большого труда, постоянно адаптируйте свой сайт под последнюю поддерживаемую версию языка. А также используйте регулярно обновляемые плагины и ПО, избавляясь от всего, что не обновлялось больше года и не подлежит использованию с актуальными версиями PHP.
Вышел PHP 8.2: разбираем главные изменения

Вместе с PHP-разработчиками Александром Макаровым (@SamDark), Валентином Удальцовым (@vudaltsov) и наставником Хекслета по PHP Владленом Гилязетдиновым (@funkylen) разбираемся, какие новые фичи появились в PHP 8.2, насколько эти изменения глобальны и какую роль в них сыграл проект РHP Foundation.
Эта статья — саммари стрима YouTube-канала PHP Point.
Кстати, ежегодный опрос русскоязычного PHP-сообщества с итогами года запущен! Результатами поделимся в конце января.
Главные изменения в PHP 8.2

Readonly-классы
Поля readonly сделали еще до версии 8.2. Раньше писать в них код и читать его можно было только в конструкторе. А теперь для этого не нужно помечать каждое поле — достаточно отметить весь класс как readonly .
Как выглядел код в предыдущих версиях PHP:
class BlogData < public readonly string $title; public readonly Status $status; public function __construct(string $title, Status $status) < $this->title = $title; $this->status = $status; > >
Как выглядит код в PHP 8.2:
readonly class BlogData < public string $title; public Status $status; public function __construct(string $title, Status $status) < $this->title = $title; $this->status = $status; > >
Но у фичи есть особенности:
- Readonly -классы недоступны для классов с необъявленными типами.
- Также readonly -классы недоступны для классов со статическими свойствами.
- Если мы захотим наследоваться от старого readonly -класса, новый тоже должен быть Readonly.
Типы в виде дизъюнктивной нормальной формы (ДНФ)
Теперь вместо того, чтобы указывать тип mixed для аргументов в методах, можно просто перечислять необходимые типы через амперсанд.
Как выглядел код в предыдущих версиях PHP:
class Foo < public function bar(mixed $entity) < if ((($entity instanceof A) && ($entity instanceof B)) || ($entity === null)) < return $entity; >throw new Exception('Invalid entity'); > >
Как выглядит код в PHP 8.2:
class Foo < public function bar((A&B)|null $entity) < return $entity; >>
Пожелание от меня: будьте осторожны с этой фичей. Она позволяет много методов объединять в один. Если бы я программировал приложения, то так не делал бы. А вот во фреймворках она будет очень кстати, потому что иногда, ради красивой API, мы сознательно жертвуем такой вот правильностью — используем подход с mixed -типами в сигнатуре.
Самостоятельные типы null, false и true
Это изменение единогласно приняла вся команда разработчиков PHP, так как в ядре PHP есть методы, классы и функции, которые возвращают false или true .
Если у вас метод никогда не возвращает false , то теперь можно указать, что он возвращает true или значение. Или наоборот, null и значение, или false и значение. Фича удобная и делает язык немного строже.
Как выглядел код в предыдущих версиях PHP:
class Falsy < public function almostFalse(): bool < /* . */ *>public function almostTrue(): bool < /* . */ *>public function almostNull(): string|null < /* . */ *>>
Как выглядит код в PHP 8.2:
class Falsy < public function alwaysFalse(): false < /* . */ *>public function alwaysTrue(): true < /* . */ *>public function alwaysNull(): null < /* . */ *>>
Модуль «Random»
Random — это целый пак разных интерфейсов. Особенности фичи:
- Разработчики сделали объектно-ориентированный API.
- Каждый инстанс независимый — то есть для разных целей можно инстанцировать n-штук псевдослучайных генераторов, которые никогда не пересекутся. Стало более безопасно.
- Mersenne twister заменен на интерфейс Engine. Раньше mt_rand() надо было инициализировать. Он был нужен не для всяких крипто-фич, а для того чтобы, например, сортировать массивы в случайном порядке. mt_rand() работал достаточно быстро, поэтому использовать его для утилитарных задач было неплохо. Теперь его заменили на интерфейс Engine, который предоставляет готовые реализации.
Как выглядит код в PHP 8.2:
use Random\Engine\Xoshiro256StarStar; use Random\Randomizer; $blueprintRng = new Xoshiro256StarStar( hash('sha256', "Example seed that is converted to a 256 Bit string via SHA-256", true) ); $fibers = []; for ($i = 0; $i < 8; $i++) < $fiberRng = clone $blueprintRng; // Xoshiro256**'s 'jump()' method moves the blueprint ahead 2**128 steps, as if calling // 'generate()' 2**128 times, giving the Fiber 2**128 unique values without needing to reseed. $blueprintRng->jump();
Константы в трейтах
Теперь можно объявлять константы внутри трейтов. Особенность фичи — нельзя получить доступ к константе через имя трейта, но можно через класс, который использует этот трейт.
Очень логичное изменение, на мой взгляд. Трейт сам по себе — это копипаст. Копипаст — штука опасная, но иногда полезная (у нас есть принцип «don’t repeat yourself»). И трейт — это один самых неинвазивных способов что-то повторить, который легко потом отрефакторить.
Как выглядит код в PHP 8.2:
trait Foo < public const CONSTANT = 1; >class Bar < use Foo; >var_dump(Bar::CONSTANT); // 1 var_dump(Foo::CONSTANT); // Error
Динамические свойства объявлены устаревшими
В классах PHP можно было динамически присваивать значения свойствам, которые мы не объявили ранее, и эти свойства появлялись после классов.
Теперь так сделать нельзя — будет появляться Deprecation notice . Но если сильно нужно, динамическими свойствами можно пользоваться, если пометить класс аннотацией #[\AllowDynamicProperties] . В экземплярах stdClass динамические свойства по-прежнему можно использовать.
Как выглядел код в предыдущих версиях PHP:
class User < public $name; >$user = new User(); $user->last_name = 'Doe'; $user = new stdClass(); $user->last_name = 'Doe';
Как выглядит код в PHP 8.2:
class User < public $name; >$user = new User(); $user->last_name = 'Doe'; // Deprecated notice $user = new stdClass(); $user->last_name = 'Doe'; // Still allowed
#[\SensitiveParameter]
Это маленькая, но очень классная фича, которая мельком упоминается в официальном анонсе.
Параметры в методах теперь можно обозначить как #[\SensitiveParameter] . Ниже в коде так отмечен параметр $secret , и в логах вместо значения параметра secret написано (Object(SensitiveParameterValue) .
function sensitiveParametersWithAttribute( #[\SensitiveParameter] string $secret, string $normal )
Exception: Error! in example.php:15 Stack trace: #0 example.php(25): sensitiveParametersWithAttribute(Object(SensitiveParameterValue), 'normal') #1
Считаю это изменение очень крутым, так как теперь у нас не будут утекать всякие ключи от API, пароли от базы. Команда разработчиков PHP практически единогласно проголосовала за эту фичу.
Какие еще изменения произошли
Расширение enum в константах
Раньше, чтобы использовать enum , надо было дублировать их значение. Это было очень неприятно: enum есть, а в объявлениях констант нельзя было из них что-то использовать. Теперь можно: новая фича уравнивает весь синтаксис. Классно, что язык эволюционирует в сторону удобства и большей консистентности.
const C = [self::B->value => self::B];
iterator_() + iterables
Теперь можно передавать в методы iterator_() тип \Traversables . Это просто замечательно, потому что раньше приходилось проверять, является ли аргумент объектом типа \Traversable , и если да, то надо было его конвертить. В PHP 8.2 можно больше не проводить эти проверки, что уменьшает количество кода и делает его более приятным и читаемым.
Расширена рефлексия
- Можно узнать, анонимный ли метод — ReflectionFunction::isAnonymous()
- Можно узнать, есть ли у метода прототип — ReflectionMethod::hasPrototype()
Новые функции memory_reset_peak_usage
Функции сбрасывают статистику по пиковому использованию памяти. Это очень полезно для EventLoop на PHP, Roadrunner и Swoole — мы сможем скинуть потребляемую память после запроса и измерить ту, которая ушла конкретно на один запрос.
Что признали устаревшим или убрали
- Интерполяция в строках вида $<>
- Не рекомендуется использовать функции utf8_encode и utf8_decode
- Функции strtolower и strtoupper теперь не учитывают локаль — это круто, потому что версии PHP, установленные в двух системах Linux, могут работать по-разному из-за выбранной дефолтной локали.
- Убрали много форматов callable :
- “self::method”
- “parent::method”
- “static::method”
- [“self”, “method”]
- [“parent”, “method”]
- [“static”, “method”]
- [“Foo”, “Bar::Method”]
- [new Foo, “Bar::Method”]
Мое мнение — на PHP 8.2 определенно стоит переходить хотя бы из-за крутых улучшений синтаксиса. Он все еще делает код более читаемым и понятным. Также разработчики пофиксили разные мелкие баги, которые мы не упомянули, но их было много.
Какие изменения PHP 8.2 еще в разработке

Некоторые разработчики считают, что в новую версию PHP добавили очень мало изменений. На самом деле, в РHP 8.2 было много саппортных вещей: код вычищали, из него что-то убирали. Каждое изменение, которое вводили разработчики, непросто описать в фичах. Да и вряд ли всем будет интересно, какие куски кода рефакторили. Так что по объему работы релиз 8.2 не отличается от предыдущих релизов. Просто в нем чуть меньше фич.
Большие усилия к разработке версии 8.2 приложили ребята из PHP Foundation — проекта, который финансирует разработчиков, готовых контрибьютить в PHP.

PHP Foundation создали много известных компаний, среди которых JetBrains, Automattic, Laravel. Проект запустили 22 ноября 2021 года, и за год коллектив из десяти администраторов-добровольцев и шести разработчиков внесли почти половину коммитов в ядро языка PHP и расширения.
В новую версию языка PHP Foundation имплементировал readonly -классы, самостоятельные типы null , false и true , тип true , типы в виде дизъюнктивной нормальной формы и получение свойств перечислений в константных выражениях. Также он объявил интерполяцию в строках вида $<> устаревшей.
Документация по PHP 8.2 еще в разработке, и разработчик PHP Foundation Джордж П. Баньярд сейчас отслеживает прогресс в изменениях. Вместе с командой он обсуждает эти нововведения:
- Автоматическая имплементация для enum Stringable
- Ассиметричная видимость
- Получение констант из класса
- Более понятные ошибки Date/Time
- Доработки по Readonly
- Работа с инициализаторами произвольных статических переменных.
Помочь составить документацию может каждый из нас — это, как говорится, good first issue (несложные задачи, выполнить которые под силу новичкам).
Также PHP Foundation планирует выдвинуть на обсуждение новые изменения в будущем релизе PHP 8.3.
