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 обязательно


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

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

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

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

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

     
     
  • 3.45, Аноним (45), 16:35, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 3.56, Бертолетова соль (?), 17:04, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    На французском он пе аш пе, откуда вы тут вдохновение черпаете не знаю, румынский?
     
  • 3.60, Бертолетова соль (?), 17:16, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А русская латынь, ну есть такое, что отрицать что есть, она родом из немецкой латыни которая в свою очередь из французской латыни, а вот с прочими латынями типа итальянской или английской (хотя последняя тоже из старофранцузской, но уже с разночтениями), смеха ради в итальянской таки есть "че" и это там не обсуждается, мало того что мы заимствовали "с" перед "i/e", так смешное даже не в итальянском или "нашем" подходе, а то что там везде в латыни был "к" при любой записи через "с"...
     
  • 3.67, Бертолетова соль (?), 17:21, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так вот "цикл" никогда не был "чикл", а всегда был "кикл"))
     
     
  • 4.79, Аноним (15), 17:41, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    cyclus - сайклус
     

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

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

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

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

  • 1.17, Аноним (17), 14:19, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Изменений не так много за целый год. Надо смотреть бенчмарки. Пайп оператор выглядит не очень нужным, писать на нём точно не будут т.к. он практически ничего не даёт, за то сломает обратную совместимость кода с прошлыми версиями. Тут вокруг 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, Аноним (45), 14:48, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Луджший Йазыгъ.
     
     
  • 2.25, Аноним (25), 15:08, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Из сей компилится в отличии от некоторых.
     
  • 2.34, Аноним (29), 15:37, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В 2025 году был лучшим для простеньких сайтов, для бэкенда он никогда не годился. Сейчас же он уже давно не лучший даже для простеньких сайтиков. Увы.
     
     
  • 3.36, Аноним (29), 15:39, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    *В 2005 году
     
  • 3.75, Анон1110м (?), 17:31, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Что такое задний конец и в чём его отличие от сайта?
     
     
  • 4.78, Аноним (29), 17:41, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Видите ли, в случае отдельного бэкенда, вы можете запросто сделать любой клиент (хоть мобильный, хоть десктоп) для rest api/graphql, КОГДА такая нужда будет. Да и масштабировать отдельный бэкенд проще чем единый сайтик.
     

  • 1.26, Аноним (29), 15:16, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну язычок он то не особо в 2025, ни в каких нормальных компаниях он не идёт как основной, это так себе язычок на сегодня, хотя совсем копеечных вакансий полно для него. Увы, пых упустил возможности быть серьёзным язычком.
     
     
  • 2.33, penetrator (?), 15:30, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    но легаси помирать будет еще долго
     
     
  • 3.37, Аноним (29), 15:43, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Для легаси много программистов не надо, а так пых на слуху только благодаря вордпресу, ну и всякий колхоз использует пых для простеньких сайтиков, это не считается. Увы, пых ждёт судьба перла.
     
     
  • 4.39, Аноним (45), 16:07, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В целом для пыха много программистов не надо. А людей которые готовы заплатить за быстрый результат всегда много.
     
  • 4.58, Аноним (58), 17:07, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ой, уже, наверное, лет 10 php-все, а сайты все производят и производят, wp, bitrix, laravel... вот это вот все, и на этом вот всем работает почти весь инет по сей день, а сколько еще это будут поддерживать, обновлять, дополнять да и зачем отказываться от его использования, в угоду чего, python? Как-то особых преимуществ вроди и нет перед php.
     
     
  • 5.61, Аноним (29), 17:16, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    пых - безтиповый язычок, тяп ляп и готово. typescript + go хоть проверяют типы данных на стадии компиляции, а пых такого не может, там любая лапша сойдёт. А питон не особо лучше пыха, не понимаю хайпа вокруг него.
     
     
  • 6.63, Аноним (58), 17:18, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Мож завезут строгую типизацию, а?
     
     
  • 7.66, Аноним (29), 17:21, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это похапистам придётся переписывать тот шлак, что они писали десятилетиями, это будет не пых а новый язычок уже.
     
  • 5.76, Анон1110м (?), 17:35, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    JavaScript. Непонятно почему яваскриптёры считают свой ЯваСценарий лучше а себя элитнее.
     
  • 2.38, Аноним (45), 16:06, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Прямо сейчас продавая Пых проекты заработал на дом и машину. И заказчики только просят ещё.
     
     
  • 3.41, Аноним (29), 16:23, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Проекты в какой сфере?
     
     
  • 4.43, Аноним (45), 16:33, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Продажи
     
     
  • 5.51, Аноним (29), 16:47, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну так индивидульные сайтики можно клепать в чём угодно, для прода же пых не подходит ни для бэкенда, ни для нормального фронтенда, вот такой вот франкенштейн. Рад, что у вас получается зарабатывать на пыхе деньги.
     

  • 1.40, Аноним (40), 16:16, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Единственный язык, в котором при обновлении редко что-то ломается из зависимостей. Вспоминаю ноду, дарт или питон. Особенно питон, у которого даже при обновлении минорки отваливается половина зависимых пакетов.
     
     
  • 2.44, 1 (??), 16:33, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Единственный язык, в котором при обновлении редко что-то ломается

    Ну вспомни переход от 5.3 к 5.4

     
     
  • 3.46, Аноним (45), 16:35, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо такое вспоминать.
     
  • 2.48, Аноним (45), 16:36, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.49, Аноним (49), 16:41, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Было title PHP 8 5 Released slug strtolower str_replace , ... большой текст свёрнут, показать
     
  • 1.50, Gemorroj (ok), 16:46, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    проходной релиз так-то. ждем true async.
     
     
  • 2.53, Аноним (29), 16:50, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Даже при наличии нативной асинхронности, пыху нужны нормальные типы данные при компиляции, не только в рантайме, с этим у пыха беда.
     
  • 2.55, Аноним (49), 17:00, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это будет сложно сделать.

    В каком-нибудь JS изначально были коллбэки, условным Promisify проблема решается.

    А в PHP всё синхронно. Даже если закрыть глаза на глобальное состояние (superglobals и тп), в конце концов это всё можно решить костылём, привязав globals к конкретному условному гринтреду, то что делать с условным $db->query(), как отличить promise от значения? Если расставлять везде await, в мусорку идет 99% написанного кода - не годится.

    Можно придумать какой-то костыль, когда обычное обращение к Promise неявно делает await, а чтобы его оставить, надо написать какой-нибудь условный defer, но это явно будет крайне непросто реализовать

     
     
  • 3.65, Gemorroj (ok), 17:20, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ты не в теме) https://externals.io/message/129300
     
  • 2.77, Анон1110м (?), 17:38, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да? И асинхронность всё ускоррит в 10 раз?
     

  • 1.52, Аноним (58), 16:49, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, а кому-то не хватает и без того довольно обширного синтаксиса/сахара? Ощущение что эти версии штампуются ради штамповки хоть что нибудь, но новая версия, и это не только php касается. Нафига все это надо, и кому, впрос. А сахар в больших кол-вах большой пользы не приносит и даже в программировании.
     
     
  • 2.54, Аноним (29), 16:51, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Они хотят быть похожими на джаву/спринг из-за их солидности, однако это всё не нужно, и смотрится смешно.
     
  • 2.68, Gemorroj (ok), 17:23, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    это Larry Garfield говнякает. этот персонаж специализируется на добавлении всякого неудобоваримого сахара.
    https://externals.io/message/128473
     
     
  • 3.71, Аноним (29), 17:27, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Напиши ему, чтобы он не добавлял всякую шляпу в пых.
     

  • 1.57, Соль земли2 (?), 17:04, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    1995: PHP is dead, learn ColdFusion
    2002: PHP is dead, learn ASP .net
    2003: PHP is dead, learn Django
    2004: PHP is dead, learn Ruby on Rails
    2010: PHP is dead, learn Flask
    2011: PHP is dead, learn AngularJS
    2016: PHP is dead, learn Next.js
    2022: okay this is awkward
     
     
  • 2.59, Аноним (29), 17:10, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 2.72, 1 (??), 17:28, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно - ЯП сравнивается с фреймворками.

    Это как }|{0пу с пальцем сравнивать.

     

  • 1.62, jura12 (??), 17:17, 20/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Обновления и ломка языка надоели. php устарел. Нормальные патсаны на питоне или на ноде сайте делают. Я на статические перешёл.
     
     
  • 2.64, Аноним (58), 17:20, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Я на статические перешёл.

    Енто на какой?

     
     
  • 3.69, jura12 (??), 17:24, 20/11/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.70, Аноним (29), 17:26, 20/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не то что устарел, просто появились конкуренты с какой ни какой, но строгой типизацией. Да и отсуствие нативной асинхронности делает выбор не в пользу пыха. Вот два ключевых огромных недостатка.
     

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



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

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