The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз языка программирования PHP 8.5

20.11.2025 13:20

После года разработки опубликован релиз языка программирования PHP 8.5. Новая ветка включает серию новых возможностей, а также несколько изменений, нарушающих совместимость.

Ключевые изменения в PHP 8.5 (1, 2, 3):

  • Добавлен оператор "|>" (pipe), позволяющий передавать значения от одной функции к другой без использования промежуточных присвоений и переменных, используя результат выполнения одной функции в качестве параметра в другой. Если функция имеет один аргумент, параметр для передачи значения выбирается через указание "...", а если у функции несколько аргументов подстановка осуществляется при помощи замыканий. Например, следующий код
    
       $output = $input 
           |> trim(...)
           |> fn (string $string) => str_replace(' ', '-', $string)
           |> fn (string $string) => str_replace(['.', '/', '…'], '', $string)
           |> strtolower(...);
    
    эквивалентен
    
       $temp = trim($input);
       $temp = str_replace(' ', '-', $temp);
       $temp = str_replace(['.', '/', '…'], '', $temp);
       $output = strtolower($temp);
    
    или
    
       $output = strtolower(
           str_replace(['.', '/', '…'], '',
               str_replace(' ', '-',
                   trim($input)
               )
           )
       );
    
  • Предоставлена поддержка присвоения новых значений клонированным объектам во время их клонирования, через передачу в функцию clone() ассоциативного массива.
    
        public function withTitle(string $title): self
        {
            return clone($this, [
                'title' => $title,
            ]);
        }
    
  • Добавлен атрибут "#[NoDiscard]", который может применяться для пометки функций, возвращаемые значения от которых всегда должны использоваться. Если возвращаемое подобной функцией значение игнорируется интерпретатор выведет предупреждение. Для обхода проверки можно использовать вызов с приведением к типу void.
    
       #[NoDiscard("you must use this return value.")]
       function foo(): string {
           return 'hi';
       }
    
       foo();           // вывод предупреждения
       (void) foo();    // Ok
       $string = foo(); // Ok
    
  • Разрешено использование замыканий (closures) и вызываемых объектов первого класса (first-class callables) в константных выражениях, в которых ранее допускалось указание неизменяемых значений, вычисляемых во время компиляции. Например, теперь можно указывать замыкания в атрибутах, значениях по умолчанию и константах. Используемые подобным образом замыкания всегда должны помечаться ключевым словом "static" и не могут обращаться в внешним переменным при помощи выражения "use".
    
       #[SkipDiscovery(static function (Container $container): bool {
           return ! $container->get(Application::class) instanceof ConsoleApplication;
       })]
    
  • При выводе фатальных ошибок к тексту сообщения теперь прикрепляется обратная трассировка (backtrace) вызовов.
  • Добавлены функции array_first() и array_last(), выводящие первый и последний элементы массива. Например, вместо
    
       $first = $array[array_key_first($array)] ?? null;
    
    теперь можно писать
    
       $first = array_first($array);
    
  • Добавлен модуль URI, прелоставляющий упрощённый API для разбора ссылок. Разбор осуществляется при помощи библиотек uriparser и lexbor.
    
       use Uri\Rfc3986\Uri;
    
       $uri = new Uri('https://opennet.me/64290');
    
       $uri->getHost();   // opennet.me
       $uri->getScheme(); // https://
    
  • Реализован атрибут "#[DelayedTargetValidation]", при помощи которого можно перенести проверку атрибутов, таких как "#[Override]", со стадии компиляции на стадию выполнения.
    
       #[DelayedTargetValidation]
       #[Override]
       public const NAME = 'Child';
    
  • Добавлены функции get_error_handler() и get_exception_handler() для определения функций с обработчиками ошибок и исключений.
  • В модуле Curl реализована функция curl_share_init_persistent(), позволяющая совместно использовать дескрипторы при обработке разных запросов.
  • В модуле Exif добавлена поддержка изображений в форматах HEIF и HEIC.
  • Объявлены устаревшими: нестандартный синтаксис приведения имён типов (например, "(integer)", а не "(int)"); использование обратных кавычек (`) для вызова команд вместо shell_exec(); повторные объявления констант; использование точки с запятой вместо двоеточия для завершения операторов case; указание null вместо пустой строки массивах или в функции array_key_exists(). Из ini-файла удалена поддержка настройки "disabled_classes".


  1. Главная ссылка к новости (https://www.php.net/releases/8...)
  2. OpenNews: PHP переходит на лицензию BSD-3, совместимую с GPL
  3. OpenNews: Опубликованы результаты аудита безопасности кодовой базы PHP
  4. OpenNews: Релиз языка программирования PHP 8.4
  5. OpenNews: Уязвимость в Glibc, эксплуатируемая через скрипты на PHP
  6. OpenNews: Предварительный выпуск проекта PXP, развивающего расширенный диалект языка PHP
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64290-php
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Мемоним (?), 13:27, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Добавлен оператор "|>" (pipe)

    Синтаксический сахарозаменитель какой-то

     
     
  • 2.9, IMBird (ok), 13:45, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А по мне так недурно выглядит.
    Наверное у них просто нет методов-расширений (которые прекрасны, но требуют определённого кода как в том же дотнете и усложняют жизнь системам автоподстановки) и они выкрутились таким способом.
     
  • 2.15, Аноним (15), 14:06, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    банальный оператор композиции, непонятно зачем это называют "трубой".
     
     
  • 3.35, Аноним (15), 15:37, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    минусатор видать с логикой не дружит, у него труба и конвейер это одно и тоже.
     

  • 1.4, Аноним (4), 13:28, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Лучшейший язык пи аш пи(пи эйч пи) стал еще лучше. Странно что до сих пор нету альтернативного рантайма, как node для javascript только наоборот.
     
     
  • 2.10, IMBird (ok), 13:49, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Википедия говорит что есть и много. Сходу вспоминаю, что лицокнига и вконтакт рожали себе по рантайму.
     
     
  • 3.12, Bottle (?), 14:00, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    ВТентакле породил ужаснейшнего монстра - KPHP, который транспилирует код в C++ для его дальнейшей компиляции.
    Представили себе цену поддержки этого чудовища?
     
     
  • 4.14, Юра (??), 14:02, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • –5 +/
    В твоей мазанке свет уже дали?
     
     
  • 5.20, Аноним (-), 14:30, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.18, кек (?), 14:22, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > как node для javascript только наоборот.

    т.е. javascript для node?

     
  • 2.27, zionist (ok), 15:18, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Лучшейший язык пи аш пи(пи эйч пи) стал еще лучше.

    Таки пи эйч пи и только пи эйч пи. Латинизмы вроде пи аш пи и русизмы вроде пэ ха пэ - это зло.

     

  • 1.8, 12yoexpert (ok), 13:38, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    опять сломали все плагины?
     
     
  • 2.13, Похерес (?), 14:01, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    и совместимость тоже...

    Ну вот как работать, только разберешься, и на тебе, бац и уже работает не так!

     
     
  • 3.28, zionist (ok), 15:18, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.11, Юра (??), 13:58, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Выглядит сложнее джавы и Си++ вместе взятых.
     
     
  • 2.16, Не пыхер (?), 14:19, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну насчёт плюсов ты загнул, а вот джаву я считаю пых уже почти догнал. И в чем прикол этого языка теперь непонятно.
     
     
  • 3.31, IMBird (ok), 15:20, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Индусы. Индусы любят яву. Любят яву настолько, что изговняли весь дотнет, дабы по образу и подобию. Ведь чем больше строк напишешь, тем больше заплатят.
     
  • 2.24, Аноним (24), 14:50, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Молодежь нынче полностью не знает php все только питонисты. Сложнее сказать в чат джипити напиши мне привет мир они не могут.  
     
     
  • 3.29, Аноним (29), 15:19, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.30, zionist (ok), 15:20, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.17, Аноним (17), 14:19, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Изменений не так много за целый год. Надо смотреть бенчмарки. Пайп оператор выглядит не очень нужным, писать на нём точно не будут т.к. он практически ничего не даёт, за то сломает обратную совместимость кода с прошлыми версиями. Тут вокруг 9.0 ходят серьёзные разговоры про дженерики и поговаривают про реализацию Pthread (пока не ясно на корутинах или нет) нативно в базовой либе. Вот таких изменений подождём однозначно.
     
  • 1.19, Аноним (19), 14:26, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    пипец, а ведь можно было использовать "..." и там, где несколько аргументов, чтоб без замыканий:

        $output = $input
            |> trim(...)
            |> str_replace(' ', '-', ...)
            |> str_replace(['.', '/', '…'], '', ...)
            |> strtolower(...);

    дизайнеры языка не могут в консистентность. Хотя, требовать от пыха консистентности глупо, весь язык адская мешанина стилей явы, си и перла (гуглить "фрактал плохого дизайна").

     
     
  • 2.22, Аноним (-), 14:31, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.32, IMBird (ok), 15:29, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>фрактал плохого дизайна
    >>Кстати: я обожаю Python. И с удовольствием прожужжу тебе уши, ноя о нём, если ты на самом деле этого хочешь. Я не утверждаю, что он идеален; я просто взвесил его преимущества и его проблемы и сделал вывод, что он лучше всего подходит для того, что я делаю.

    Ну т.е. питонист (лол) придолбался к штуке, которая изначально просто препроцессор страниц, эдакий веб-баш, постепенно обрастающий функциональностью. Это как явист, катящий бочку на 1С; вроде как и выглядит логично, но аргументы уровня «танк Т-90 хуже тойоты камри, ведь в танке нет Car Play и бесключевого доступа, а управление передачами вообще ужас» обычно вызывают сомнения в рассудке говорящего.

     

  • 1.21, Не пыхер (?), 14:30, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати а что там по оптимизациям? В прошлых релизах все ускоряли и ускоряли, в этом релизе ни слова
     
  • 1.23, Аноним (24), 14:48, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Луджший Йазыгъ.
     
     
  • 2.25, Аноним (25), 15:08, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Из сей компилится в отличии от некоторых.
     
  • 2.34, Аноним (29), 15:37, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В 2025 году был лучшим для простеньких сайтов, для бэкенда он никогда не годился. Сейчас же он уже давно не лучший даже для простеньких сайтиков. Увы.
     
     
  • 3.36, Аноним (29), 15:39, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    *В 2005 году
     

  • 1.26, Аноним (29), 15:16, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну язычок он то не особо в 2025, ни в каких нормальных компаниях он не идёт как основной, это так себе язычок на сегодня, хотя совсем копеечных вакансий полно для него. Увы, пых упустил возможности быть серьёзным язычком.
     
     
  • 2.33, penetrator (?), 15:30, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    но легаси помирать будет еще долго
     
     
  • 3.37, Аноним (29), 15:43, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Для легаси много программистов не надо, а так пых на слуху только благодаря вордпресу, ну и всякий колхоз использует пых для простеньких сайтиков, это не считается. Увы, пых ждёт судьба перла.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру