The OpenNET Project / Index page

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

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

25.11.2021 21:11

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

Ключевые улучшения в PHP 8.1:

  • Добавлена поддержка перечислений (enum), например, вместо класса с константами теперь можно использовать следующую конструкцию:
    
       enum Status {
         case Pending;
         case Active;
         case Archived;
       }
    
       class Post
       {
           public function __construct(
               private Status $status = Status::Pending;
           ) {}
    
           public function setStatus(Status $status): void
           {
            // …
           }
       }
    
       $post->setStatus(Status::Active);
    
  • Добавлена поддержка легковесных потоков, именуемых файберами (Fiber) и дающими возможность управлять потоками выполнения на низком уровне. Файберы позволяют определять блоки кода, выполнение которых может быть приостановлено и возобновлено по аналогии с генераторами, но из любой позиции стека. Непосредственно файберы не обеспечивают одновременное выполнение потоков и требуют определения цикла обработки событий, но при этом дают возможность использовать один и тот же API в коде, работающем в блокирующем и неблокирующем режимах. Поддержку файберов планируется добавить во фреймворки Amphp и ReactPHP.
    
       $fiber = new Fiber(function (): void {
           $valueAfterResuming = Fiber::suspend('after suspending');
        
           // … 
       });
     
       $valueAfterSuspending = $fiber->start();
     
       $fiber->resume('after resuming');
    
  • Улучшена реализация кэша объектного кода (opcache), в которой появилась возможность кэширования информации о наследовании классов. Оптимизация позволила поднять производительность некоторых приложений на 5-8%. Из других изменений, влияющих на производительность, отмечается оптимизация работы JIT, реализация поддержки JIT для архитектуры ARM64 (AArch64), ускорение разрешения имён классов, оптимизация библиотек timelib и ext/date, повышение производительности сериализации и десериализации, оптимизация функций get_declared_classes(), explode(), strtr(), strnatcmp() и dechex(). В общем виде отмечается повышение производительности Symfony Demo на 23.0%, а WordPress на 3.5%.
  • Оператор распаковки внутри массивов "...$var", позволяющий выполнять подстановку существующих массивов при определении нового массива, расширен поддержкой строковых ключей (ранее поддерживались только цифровые идентификаторы). Например, теперь можно использовать в коде:
    
       $array1 = ["a" => 1];
       $array2 = ["b" => 2];
       $array = ["a" => 0, ...$array1, ...$array2];
       var_dump($array); // ["a" => 1, "b" => 2]
    
  • Разрешено использовать ключевое слово "new" в инициализаторах, что позволяет использовать объекты в качестве значений параметров по умолчанию, статических переменных, глобальных констант и в аргументах атрибутов. Также возможно создание вложенных атрибутов.
    
       class MyController {
           public function __construct(
               private Logger $logger = new NullLogger(),
           ) {}
       }
    
  • Предоставлена возможность пометки свойств класса для доступа только для чтения (информация в подобные свойства может быть записана только один раз, после чего не будет доступна для изменения).
    
       class PostData {
           public function __construct(
               public readonly string $title,
               public readonly DateTimeImmutable $date,
           ) {}
       }
    
       $post = new Post('Title', /* … */);
       $post->title = 'Other';
       > Error: Cannot modify readonly property Post::$title
    
  • Реализован новый синтаксис для вызываемых объектов (callable) - замыкание теперь можно сформировать, вызвав функцию и передав ей в качестве аргумента значение "..." (т.е. для получения ссылки на функцию можно использовать myFunc(...) вместо Closure::fromCallable('myFunc')):
    
       function foo(int $a, int $b) { /* … */ }
       $foo = foo(...);
       $foo(a: 1, b: 2);
    
  • Добавлена полноценная поддержка пересечений типов (intersection types), позволяющих создавать новые типы, значения которых должны подпадать одновременно под несколько типов. В отличие от union-типов, определяющих коллекции из двух и более типов, пересечения требуют наличия в заполняемом множестве не любого из перечисленных типов, а всех указанных типов.
    
       function count_and_iterate(Iterator&Countable $value) {
          foreach ($value as $val) {
              echo $val;
          }
          count($value);
       }
    
  • Появился новый тип "never", который можно использовать для информирования статических анализаторов о том, что функция прекращает выполнение программы, например, вызывая исключение или выполняя функцию exit.
    
       function dd(mixed $input): never
       {
          exit;
       }
    
  • Предложена новая функция array_is_list, позволяющая определить, что ключи в массиве расположены в порядке увеличения числовых значений, начиная с 0:
    
       $list = ["a", "b", "c"];
       array_is_list($list); // true
       
       $notAList = [1 => "a", 2 => "b", 3 => "c"];
       array_is_list($notAList); // false
    
       $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];
       array_is_list($alsoNotAList); // false
    
  • Для запрета переопределения констант родительского класса теперь можно использовать ключевое слово "final".
    
       class Foo
       {
           final public const X = "foo";
       }
     
       class Bar extends Foo
       {
          public const X = "bar";
    >    Fatal error: Bar::X cannot override final constant Foo::X
       }
    
  • Предложены функции fsync и fdatasync для принудительного сохранения изменений из дискового кэша.
    
       $file = fopen("sample.txt", "w");
       fwrite($file, "Some content");
       if (fsync($file)) {
           echo "File has been successfully persisted to disk.";
       }
       fclose($file);
    
  • Добавлена возможность использования префиксов "0o" и "0O" для восьмеричных чисел, помимо ранее применявшегося префикса "0".
    
       016 === 0o16; // true
       016 === 0O16; // true
    
  • Выборочно ограничено применение $GLOBALS, что приведёт к нарушению обратной совместимости, но даст возможность значительно ускорить операции с массивами. В том числе запрещена запись в $GLOBALS и передача $GLOBALS по указателю. Анализ 2000 пакетов показал, что только 23 из них затронет данное изменение. Например, прекращена поддержка таких выражений, как:
    
       $GLOBALS = [];
       $GLOBALS += [];
       $GLOBALS =& $x;
       $x =& $GLOBALS;
       unset($GLOBALS);
       by_ref($GLOBALS);
    
  • Объявлены устаревшими неявные несовместимые преобразования чисел с плавающей запятой (float) в целочисленное представление (int), приводящие к потере точности. Например, изменение применимо при преобразовании значений ключей массивов, принудительном объявлении целочисленных типов и в операторах, работающих только с целыми числами.
    
       $a = [];
       $a[15.5]; // deprecated, as key value loses the 0.5 component
       $a[15.0]; // ok, as 15.0 == 15
    
  • Внутренние методы теперь должны возвращать корректный тип. В PHP 8.1 при возвращении типа, не соответствующего объявлению функции, будут выводиться предупреждение, но в PHP 9.0 предупреждение будет заменено на ошибку.
  • Продолжена работа по переводу функций c использования ресурсов на манипуляцию объектами. На объекты переведены функции finfo_* и imap_*.
  • Объявлена устаревшей передача значений null в качестве аргументов внутренних функций, помеченных как non-nullable. В PHP 8.1 использование конструкций вида str_contains("string", null) будет приводить к предупреждению, а в PHP 9 к ошибке.
  • Объявлен устаревшим программный интерфейс Serializable.
  • Во многих модулях ресурсы преобразованы в объекты (file_info -> finfo в FileInfo, FTP\Connection, IMAP\Connection, LDAP\Connection|Result, PgSql\Connection|Result, PSpell\Dictionary, GdFont в GD и т.п.).
  • Добавлена поддержка алгоритмов хэширования MurmurHash3 и xxHash.


  1. Главная ссылка к новости (https://www.php.net/archive/20...)
  2. OpenNews: Объявлено о создании организации PHP Foundation
  3. OpenNews: Уязвимость в PHP, позволяющая обойти ограничения, заданные в php.ini
  4. OpenNews: Отчёт о компрометации git-репозитория и базы пользователей проекта PHP
  5. OpenNews: Релиз языка программирования PHP 8.0
  6. OpenNews: Релиз языка программирования PHP 7.4
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56232-php
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (155) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Онаним (?), 21:14, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Fibers - это вкусно и полезно. Особенно для сложных кооперативных тасков.
    Производительность правда ожидаемо хуже линейных тасков на генераторах. Накладные расходы на переключение контекста выше в два раза по факту, что в общем и логично, контекст генератора собственного стека не имеет, в отличие от файбера.
     
     
  • 2.5, pavlinux (ok), 21:31, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +28 +/
    > .. кооперативных тасков... линейных тасков на генераторах.... контекст генератора ... в отличие от файбера.

    Шоб с тобой дети на Brainfuck общались!

     
     
  • 3.63, YetAnotherOnanym (ok), 11:10, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ачотакова? Мы же не говорим "нити", мы говорим "треды" (ну, иногда "потоки"). Здесь то же самое.
     
     
  • 4.76, Аноним (76), 11:50, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "тасков", здесь однозначно есть русскоязычный аналог.
     
     
  • 5.84, YetAnotherOnanym (ok), 12:19, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    "Анатолий Борисович, ну зачем вот это вот «ваучер», ведь есть же хорошее русское слово - «приватизационный чек»" (ц)


     
  • 5.162, Онаним (?), 22:20, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну я могу полностью на английский перейти, но половина ж не всё поймёт.
     
  • 4.117, Аноним (117), 18:57, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Всегда говорим потоки.
     
  • 3.67, Онаним (?), 11:23, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну сорян, гуманитариям просьба не беспокоить.
     
  • 2.13, kai3341 (ok), 21:51, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    А можешь пояснить за файберы? Это асинхронность завозят?

    PS: я не похапешник просто. Расскажу, с чем сталкивался

    В python корутины -- это по факту генераторы. Прикольно, что простейшую корутину можно await-нуть вне event loop. Ржачно, что await и yield from -- это на уровне байткода одно и то же, и поэтому нельзя сделать yield from в асинхронном генераторе. Впрочем, устранимо -- нужно только на уровне байткода окончательно развязать корутины с генераторами

    В JS асинхронность на промисах -- суть коллбэки. Питонячья асинхронность выглядит чуток костыльной на фоне промисов, но она работает и работает хорошо

     
     
  • 3.68, Онаним (?), 11:26, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну вот раньше да, кооперативные таски которые в отдельных местах обозвали corou... большой текст свёрнут, показать
     
  • 2.22, Аноним (22), 22:18, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    попробуйте также swoole/openswoole - более полноценная штука чем просто одни файберы
     
  • 2.30, Аноним (30), 23:34, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Laravel вдохновлялась Рельсами, теперь вот еще Fiber завезли из Ruby'07. Бххх.
     
     
  • 3.31, Аноним (30), 23:35, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ruby'17, конечно. Опечатка.
     
     
  • 4.42, Аноним (42), 01:51, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Winapi, скорее.
    там они чуть с первой версии ос появились.
     
  • 3.70, Онаним (?), 11:40, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Laravel сбоку, а Fiber завезли в кору.
     

  • 1.2, А где же каменты (?), 21:17, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Никита в контрибьюторах или уже нет?
     
  • 1.3, pavlinux (ok), 21:19, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > Добавлена поддержка перечислений,
    >

    enum Status {
         case Pending;
         case Active;
         case Archived;
       }



    Это рейволюция, ребяты!
    Ждём добавление указателей. Хачу на пэхе: *++d[&i++] = (volatile const * void __restrict *)&(s++[**++j]);


     
     
  • 2.8, Я не очень хорош в придумывании ников (?), 21:40, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем?
     
     
  • 3.41, pavlinux (ok), 00:36, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Зачем?

    Чтоб был Тьюринг-полный пздц.

     
  • 2.17, Старший аноним (?), 22:00, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не дождешься. ПХП с 1 декабря закрывается.
     
     
  • 3.119, Аноним (119), 19:15, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не закрывается, просто по QT кодам будет.
     
     
  • 4.120, Аноним (119), 19:17, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    *QR
     
  • 2.20, Bx (ok), 22:11, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что ж тебя так корячит? Ну сделали энамы, тебе то что? Хлеб отобрали? Мяса недоложили? Не дают глупость писать?
     
     
  • 3.23, Аноним (23), 22:26, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Не дают глупость писать?

    Ох, если бы ...

     
  • 3.25, Аноноша (?), 23:00, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Меня одного мучает вопрос зачем там case внутри enum? Нельзя было просто без case через запятую сделать?
     
     
  • 4.47, Аноним (-), 06:19, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты не один задаешься этим вопросом.
     
  • 4.59, Стас Михайлов (?), 09:52, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Там switch не хватает ешо. Какой case без swtich?
     
  • 4.78, Аноним (78), 11:58, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > case внутри enum?

    Это ответ на вопрос, что курят пыхпыхи...

     
  • 2.71, Онаним (?), 11:41, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    enum хорошо, раньше приходилось const'ами лепить.
     
  • 2.132, Аноним (132), 23:32, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вы в java указатели сколько десятилетий ждете? Там тоже enum есть, почти 20 лет как.
     
  • 2.133, Аноним (132), 23:35, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    в php и раньше было расширение SplEnum
     

  • 1.9, Аноним (9), 21:40, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +15 +/
    Так усложнили синтаксис, что java выучить уже легче чем php...
     
     
  • 2.15, Смузихлёб (?), 21:55, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Коту делать нечего, так он бубенцы лижет!!! Так и в современном ОйТи обновления ради обновлений.
     
     
  • 3.95, Аноним (95), 14:30, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не ИТ это породило, а маркетинг. Нельзя теперь сидеть на строй версии айфона это не модно.
    Вот и тут нужно обязательно взять новую версию и "купить" ...
     
     
  • 4.128, Смузихлёб (?), 19:50, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > маркетинг

    Самая жесть, это когда обновления [b]плановые[/b] и привязаны к определенной дате.

     
  • 2.28, Аноним (28), 23:23, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У java очень простой синтаксис. Особенно у java 8
     
  • 2.53, Аноним (53), 07:43, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Зарплата пхпшника - 50р/час
    Зарплата джависта - 50$/час
    Выбор очевиден
     
     
  • 3.79, Аноним (78), 11:59, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Потому что жабист выдаёт в час продукции на $100, а пыхпыхарь - на 100 руб.
     
     
  • 4.96, Аноним (95), 14:31, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Так изначально было ... PHP был язык для быстрого старта компаний
    сейчас кто мог отуда выбрался, а осталбьные там продолжают страдать

    Что мешает изучить джаву или пайтон или голанг и двинуть дальше?

     
     
  • 5.112, Gemorroj (ok), 17:44, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    вы живете в мире иллюзий. и путаете "дальше" со "сбоку".
    php - рабочая лошадка, и именно он двигает прогресс. а смузихлебы просто кочуют по волнам хайпа порожденного глупостью и маркетологами от ИТ.
     
     
  • 6.140, Аноноша (?), 03:13, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > php - рабочая лошадка, и именно он двигает прогресс

    Клепание сайтов на wordpress'е - двигать прогресс?

     
  • 6.145, Аноним (53), 07:46, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    В чем прогресс то заключается? И когда юникод завезут в твоём "прогрессивном" языке?
     
     
  • 7.148, onanim (?), 10:18, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    $ cat lol.php
    <?php
    if (extension_loaded('mbstring')) {
      echo "я умею в юникод! 👍 \n";
    } else {
      echo "unikod ne zavezli :( \n";
      exit(1);
    }

    $rust = "🤮";
    if ($rust == "💩") {
      echo "пых сила, раст могила";
    } else {
      echo "раст = $rust \n";
    }

    $ php lol.php
    я умею в юникод! 👍
    раст = 🤮

     
     
  • 8.149, onanim (?), 10:22, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    cat lol2 php php ютф 129300 9745 65039 echo нуко ща проверим ки... текст свёрнут, показать
     
     
  • 9.160, Ilya Indigo (ok), 13:19, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот это лучше бы он не умел ... текст свёрнут, показать
     
     
  • 10.163, Онаним (?), 22:25, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению, частично умеет Не потому, что хотел уметь, а потому, что ему пох н... текст свёрнут, показать
     
     
  • 11.167, Ilya Indigo (ok), 05:48, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А должно быть вот так a-zA-Z_ a-zA-Z0-9_ , причём регистрозависимо Для мен... текст свёрнут, показать
     
     
  • 12.169, Онаним (?), 07:58, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще да, я сам давно удивляюсь - на фига 0x80-0xff в этом зоопарке ... текст свёрнут, показать
     
  • 5.147, морошка ягодка такая (?), 08:51, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    дотнет еще
     
  • 2.121, Skynin (?), 19:24, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Семантически php сложней java уже с 5.* версии
    Просто можно и сейчас писать по старому, как на 3.*, Хотя, варнингов уже будет пачка
     

  • 1.10, Аноним (10), 21:43, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Самый лучший язык из всех!
     
     
  • 2.11, Аноним (11), 21:48, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    "Самый лучший язык из всех для WordPress!"

    fixed

     
     
  • 3.81, Аноним (78), 12:01, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > для WordPress

    Понятно тогда, почему во вротпрессе столько дыр.

     
  • 2.26, Аноноша (?), 23:01, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Мне жаль тебя расстраивать...
     
     
  • 3.97, Аноним (95), 14:33, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Что ты говоришь у Пыха есть сообщество говнарей такое же как и JavaScript так что не надо тут ...
    Сидят делают типовые сайты для магазинов зоотоваров и пусть радуються.
     
     
  • 4.111, Анонимный (?), 17:14, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    NodeJS/JS ближе к пользователю и фронту, а на PHP нормальный клиентский опыт не реализовать.
     
     
  • 5.136, Аноним (136), 01:05, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Избушка-избушка, повернись к лесу передом, а к пользователю задом. (Фронт на бэк, оверхед на фронт у SPA)
     
  • 4.141, Аноноша (?), 03:14, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Казалось бы причем тут js
     

  • 1.14, Смузихлёб (?), 21:53, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Что можно написать на пхп 8 чего нельзя было на пхп 4? К чему все эти обновления ради обновлений? Жизнь слишком коротка чтобы отслеживать всё это.
     
     
  • 2.18, Аноним (11), 22:04, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    повышение призводительности в новых версиях имеет смысл всегда

    а вот сахарок не особо нужен - все больше какойтой с++ франкенштейн получается

     
     
  • 3.44, Смузихлёб (?), 03:13, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –7 +/
    > повышение призводительности в новых версиях

    Да вот только на практике новые версии ВСЕГДА тормознее старых и требовательнее к железу. Запусти четвертую пыху на современном железе и офигеешь от производительности.

     
     
  • 4.50, Ilya Indigo (ok), 07:11, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Конечно, я уже молчу что код просто не будет работать, там php-fpm просто нет.
     
     
  • 5.124, Смузихлёб (?), 19:27, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > fpm

    Не нужно.

     
  • 4.64, anonymous (??), 11:11, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вы тут сильно ошибаетесь. То же добавление JIT ускорить работу PHP в разы. И вообще новые мажорные версии (начиная м 5ой) идут на ускорение, а не на замедление.
     
     
  • 5.109, Аноним (109), 16:50, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а нам тут врут - что не в разы а на 40% в ненужно синтетическом тесте и 5-15% в реальном применении по результатам свежезапиленного для arm64. Но мы конечно верим анониму-ускоряльцу.

     
     
  • 6.113, Gemorroj (ok), 17:46, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    в специфических ситуациях именно в разы.
     
  • 6.137, anonymous (??), 01:13, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не нужно не кому верить: проверьте сами. Я вот проверял.
     
     
  • 7.139, anonymous (??), 01:35, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    *никому
     
  • 4.101, Здрасьте (?), 16:18, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    PHP 8.1 на много голов быстрее, чем PHP4.
     
     
  • 5.122, Смузихлёб (?), 19:26, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > PHP 8.1 на много голов быстрее, чем PHP4.

    Ты хоть в глаза видел 4 пыху, прежде чем писать подобный высер?

     
     
  • 6.129, Здрасьте (?), 20:54, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Я начинал с PHP3.
     
  • 6.134, funny.falcon (?), 00:30, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В старых php было жутко не эффективное представление array - т.е. всего. В PHP7 это поправили так, что он без JIT сравнялся с фейсбучным HipHopVM (которая была с JIT).

    Так что не надо ля-ля про скорость четвёрки. Тормоз был ещё тот.

    Просто во времена четвёрки ни кто не заморачивался с фреймворками. Не было подъёма и интерпретации сотен файлов.

    Так а что вам мешает так же на восьмёрке писать? Напишите эквивалентный код и замерьте.

     
     
  • 7.155, Смузихлёб (?), 14:49, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Тормоз был ещё тот.

    Однако вэб летал на 2-3 пнях, а сейчас вкладки хрома даже на моём i9 тормозят. Конечно, это не беда пыхи, но общая тенденция на лицо.

     
     
  • 8.156, Аноним (156), 15:18, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Написали глупость и сами ее опровергли Это достойный поступок ... текст свёрнут, показать
     
     
  • 9.161, Смузихлёб (?), 19:56, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мозга не хватает понять заложенного смысла ... текст свёрнут, показать
     
  • 6.154, Cradle (?), 14:28, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    там одна из первых радикальных оптимизаций еще в 5.2 случилась, когда капитально переработали структуру внутреннего стека, дало махом прирост производительности раза в два как минимум. Давно это было, год 2010-2011 вроде, йа тогда как раз по работе в их core копался, очень веселые баги отлавливал и репортил. И мордокнига уже тогда со своим первым компилятором вылезла, тоже интересно было. Так что не надо на них балон крошить, кое-то там под капотом постоянно оптимируется. Синтаксис другее дело, постоянно их куда-то заносит, но этим у них другие ребята занимаются.
     
  • 2.100, Здрасьте (?), 16:17, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Дофига всего. Взять те же namespace, как вспомню все эти длинющие названия классов в Zend Framework, так вздрогну.
     
     
  • 3.127, Смузихлёб (?), 19:48, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > namespace

    Не нужно, как и всё ООП. Для сайтов в 99% случаев хватает процедурного программирования, а всё остальное усложнение ради усложнения.

     
  • 3.164, Онаним (?), 22:26, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Надо сказать, менее длиннющими они от неймспейсов не стали.
     
     
  • 4.168, Аноним (11), 07:31, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    зато удобно
     
     
  • 5.170, Онаним (?), 08:00, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не спорю, можно подтаскивать несколько разнородных проектов в один в виде библиотек.
    Делалось-то конечно не для этого, а для возможности тянуть в рот продукты жизнедеятельности говнокомпозера, не задумываясь о содержимом, но всё равно удобно, да.
     

  • 1.16, Аноним (16), 21:58, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Еще добавили JIT на arm64
     
  • 1.19, Филимон Ностальгический (?), 22:04, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Когда-то Расмус Лердорф создал Personal Homepage Tools, чтобы дети и пенсионеры с рудиментарными знаниями в программировании могли создавать себе странички. За простоту использования они платили производительностью. Простота уже давно исчезла. За что платят производительностью пользователи PHP ?

    Ну, и чтобы два раза не вставать: когда уже его перепишут на Rust ? Доколе мы будем страдать от багов ?

     
     
  • 2.29, Аноним (28), 23:26, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    В php очень быстрый интерпретатор.
     
     
  • 3.72, YetAnotherOnanym (ok), 11:44, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –8 +/
    Кгм... когда-то (ещё во времена 5-го пыха) пришлось покопаться в коде корп. сайта, доставшегося мне по наследству. Так вот, там на каждое обращение к мускулу устанавливалось соединение, скрипт авторизовывался, выполнял запрос, получал результат и отключался. И так много раз при генерации одной страницы. На каждый пук - полный цикл. Тут никакой "быстрый интерпретатор" не поможет.
     
     
  • 4.88, Blind Vic (ok), 12:54, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Просвещайся:
    https://en.wikipedia.org/wiki/Common_Gateway_Interface
    https://httpd.apache.org/docs/2.4/mod/prefork.html
     
  • 4.89, Аноним (89), 12:58, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На жабе тоже можно написать подобное - будет жаба виновата?
     
     
  • 5.92, YetAnotherOnanym (ok), 13:46, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > На жабе тоже можно написать подобное - будет жаба виновата?

    Емнип, жаба никогда не позиционировалась как язык, на котором сможет писать любой пионер и пенсионер. Она создавалась как язык для любых устройств, а не для любых неучей. А вот пых создавался именно как язык, на котором может писать кто угодно (это само по себе не есть что-то плохое), причём, что намного хуже, не включая мозг. И это уже проблема именно языка - не в узком смысле (проблема синтаксиса, который такое позволяет), а языка в целом - его экосистемы и его позиционирования его создателем.

     
     
  • 6.171, Онаним (?), 08:03, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Пых на данный момент - очень удобная JIT-обёртка вокруг сишечки и библиотек на оной.
    Я не удивлюсь, если он ещё лет через 10 начнёт с жабой тягаться за сегмент.
     
  • 4.94, onanim (?), 14:17, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    а как бы ты это сделал на C++? или другом любимом языке программирования.
     
     
  • 5.98, YetAnotherOnanym (ok), 15:06, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    На плюсах - никак, ибо я не пишу на плюсах. На чём бы я сделал поддержание пула открытых соединений к БД в те времена - хз. Сейчас для своего любимого языка я просто возьму poolboy.


     
     
  • 6.135, funny.falcon (?), 00:44, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.php.net/manual/en/function.mysql-pconnect.php

    https://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.allow-persis

     
  • 4.102, Здрасьте (?), 16:18, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Почитай про persistent connection в PHP, специалист херов.
     
     
  • 5.116, YetAnotherOnanym (ok), 18:37, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Прочитай ещё раз пост, на который отвечаешь, комментатор херов.
    Неиспользование "persistent connection" - это не ко мне претензия. Использовать "persistent connection в PHP" - этим как раз должен был заниматься тот пыхо-г..нокодер, чьё тормозное поделие оказалось в моём ведении, и с косяками которого мне пришлось тогда разбираться.
     
     
  • 6.125, onanim (?), 19:30, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Прочитай ещё раз пост, на который отвечаешь, комментатор херов.
    > Неиспользование "persistent connection" - это не ко мне претензия. Использовать "persistent
    > connection в PHP" - этим как раз должен был заниматься тот
    > пыхо-г..нокодер, чьё тормозное поделие оказалось в моём ведении, и с косяками
    > которого мне пришлось тогда разбираться.

    то есть в говнокодинге виноват язык программирования, а не говнокодер.

     
  • 4.110, Аноним (110), 16:55, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А ты не пробовал, прежде чем бежать все это ломать - выяснить, сколько времени з... большой текст свёрнут, показать
     
     
  • 5.118, YetAnotherOnanym (ok), 19:14, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А где я написал, что что-то сломал? Я тогда обошёлся паллиативными экстенсивными мерами - добавил мощи и подкрутил настройки.
    На будущее, когда этого может оказаться недостаточно, попытался поискать кому можно было бы заказать новый сайт, но все несколько веб-студий, которые тогда были в нашем городе, были способны сделать только такое же г..но, какое у нас уже было.
     
  • 3.115, Аноним (115), 18:11, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это в теории. А на практике поверх этого быстрого интерпретатора будет висеть Laravel, Yii или какой-то другой популярный фреймворк с кучей абстракций. А с учетом того что на PHP приложение собирается с нуля для каждого запроса и потом полностью уничтожается, то даже с включенным opcache всё это сливает в производительности, например, питоновской Джанге.
     
     
  • 4.165, Онаним (?), 22:29, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, вот только оно целиком не упадёт, когда какой-нибудь запрос сделает что-нибудь не так.
    На жабе это костылят через ловлю блохоисключений, но это такой костылинг, что лучше бы падало.
    Сама прелесть independent per-request handling в том, что оно действительно independent.
    Увы, кости в мозге смену парадигмы осилить многим не позволяют, отсюда и вот это всё.

    С другой стороны - на пыхе можно и жабоподобные всё-в-одном-комбайны ныне кропать, но оно нужно только там, где реально нужно.

     
  • 2.54, leap42 (ok), 07:46, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну, и чтобы два раза не вставать: когда уже его перепишут на Rust ? Доколе мы будем страдать от багов ?

    Кто именно перепишет? Растамэны, которые все вместе пока ничего кроме grep не переписали, или сами разрабы, которые, будучи способными писать подобные проекты на Си, к Rust скорее всего относятся без энтузиазма (это мягко говоря)?

     
  • 2.58, Аноним (58), 09:34, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    С чего бы она исчезла? Ни встроенный шаблонизатор, ни встроенные глобальные функции никуда не делись. Если хочешь, можешь писать код в стиле 2005 года.

    > За что платят производительностью пользователи PHP?

    Какой производительностью? У PHP есть неплохой JIT и кеш байткода — это всякие Ruby, Javascript и прочие хипстоподелия страдают по сравнению с PHP.

     
     
  • 3.75, Онаним (?), 11:49, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Из навесных шаблонизаторов очень хорош Blitz от Alexey Rybak, он идёт как модуль, и прост в доску, хотя конечно нюансов у него полно. Поскольку у PHP появился JIT, подумываю собственно переписать его Blitz на собственно PHP, сохраняя совместимость с шаблонами, по производительности теперь должно выйти не хуже. Всякие монструозные Smarty из 100500 классов на инициализацию тратят больше, чем на вывод шаблона.
     
     
  • 4.82, Sw00p aka Jerom (?), 12:02, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    в свое время ctpp был хорош, забросили
     
     
  • 5.90, Филимон Недоумевающий (?), 13:25, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пацаны, а вас не смущает, что вы на шаблонизаторе пишете шаблонизатор ?
     
     
  • 6.93, Sw00p aka Jerom (?), 13:58, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Пацаны, а вас не смущает, что вы на шаблонизаторе пишете шаблонизатор ?

    есть такое, но свои средства пхп далеки от понятия шаблонизатора. Но указанные как и мной, так и выше шаблонизаторы - написаны в виде модуля пхп (на С), не на самом языке пхп.

     
  • 6.104, Здрасьте (?), 16:19, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    PHP уже лет сто не шаблонизатор.
     
     
  • 7.126, Skynin (?), 19:32, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    тссс, не раскрывайте Великий Секрет вечным школьникам. пусть думают что
    PHP, расшифровывающийся как "PHP: Hypertext Preprocessor", как то написано в первой строчке предисловия к докумнтации.
     
  • 5.103, домен в слонике (?), 16:19, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Его же Ще ковырял? Так ему некогда с айрисом-то =)
     
     
  • 6.108, Sw00p aka Jerom (?), 16:41, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Его же Ще ковырял? Так ему некогда с айрисом-то =)

    :) Ше, тах пхп модуль перестал работать после версии 5.3

     
  • 3.87, Аноним (87), 12:48, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    [комментарий про юникод и пхп]
     
     
  • 4.130, Онаним (?), 21:44, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ничем не лучше комментария про юникод и сишечку.
     
  • 2.69, YetAnotherOnanym (ok), 11:34, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > За простоту использования они платили производительностью

    И дырявостью. Сукербергу даже пришлось свой собственный пых написать, настолько плох был тогдашний пых.

     
     
  • 3.114, Gemorroj (ok), 17:50, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    мотивация там была - производительность. в связи с этим появился php 7 с переработанными структурами данных, за сет этого серьезно подняв производительность оригинала. hack, на данный момент, не нужен.
     
     
  • 4.152, Аноним (152), 11:04, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    И традиционно ограниченной совместимостью - "нам ЭТО ненужно - значит, не будет реализовано". Получилось нечто что только сцукенбергу и полезно - за что макаку второй раз премировали, потомучто молодец.

    То же самое с их клоном hg. Бесполезное ненужно неработающее вне закрытой сеточки сцукенберга. И даже не собирающееся. Нате жрите.

     
  • 2.123, Skynin (?), 19:27, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    скорость разработки даже с самыми строгими правилами, со всеми фишками на php по прежнему выше чем на Java/C#
    а тем более чем на С++/Rust

    Поэтому - никогда на Rust не перепищется то что написано и пишется на php.
    Программистов понадобится раз в 10 больше. А их, на php - дефицит

    Где столько на Rust'е возьмутся?

     

     ....большая нить свёрнута, показать (32)

  • 1.21, Аноним (22), 22:16, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати - кто есче не попробовал - очень рекомендую попробовать екстеншн к пхп -  свул, ( swoole / openswoole ).
    Очень классная штука - добавляет корутины, параллелизацию, евент луп и тд и тп.
    тье в нод переписывать вообсче больше ничего не надо.  
    пилиться китайскими камрадами
     
     
  • 2.24, Аноним (-), 22:49, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Свул

    Швуле, судя по твоим заигрываниям с нодойжс.

     
  • 2.36, Хирург (?), 23:52, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    я предпочитаю adblock+ и noscript
     
  • 2.80, Онаним (?), 12:01, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну я попробовал, не зашло, . В итоге нарисовал свой кооперативный тасклуп, универсальный для различных вариантов имплементации - генераторы, файберы, просто state-machine routines, который расширенный эвентлуп с кучей сахара, и не требует никаких расширений.

    Конкретно не зашла event model, вот эти вот все ->on, который превращают любой мало-мальски сложный код в nesting hell.

     
     
  • 3.131, Онаним (?), 21:50, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Более адекватной выглядит линейная модель задач, когда кооперативный таск выполн... большой текст свёрнут, показать
     

  • 1.37, Михрютка (ok), 00:00, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >>>function foo(int $a, int $b) { /* … */ }

    Микола, диви, який смутний смайлик!

     
  • 1.38, Аноним (38), 00:14, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Уродливый франкенштейн c $

    enum Status {
        case Pending;
        case Active;
        case Archived;
    }

    Зачем тут case?

     
     
  • 2.40, pavlinux (ok), 00:30, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    В ихавом enum могут быть не только enum




    enum Status
    {
        case DRAFT;
        case PUBLISHED;
        case ARCHIVED;
        
        public function color(): string
        {
            return match($this)
            {
                Status::DRAFT => 'grey',  
                Status::PUBLISHED => 'green',  
                Status::ARCHIVED => 'red',  
            };
        }
    }


    юзать так:




    $status = Status::ARCHIVED;

    $status->color(); // 'red'


    https://stitcher.io/blog/php-enums


     
     
  • 3.46, Твайлайт Спаркл (?), 06:10, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    #[allow(dead_code)]
    enum Status {
        Draft,
        Published,
        Archived,
    }

    impl Status {
        #[must_use]
        pub fn color(&self) -> &'static str {
            match self {
                Self::Draft => "grey",
                Self::Published => "green",
                Self::Archived => "red",
            }
        }
    }

    fn main() {
        let status = Status::Archived;
        println!("{}", status.color());  // 'red'
    }

     
     
  • 4.66, anonymous (??), 11:17, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А зачем нужны "allow(dead_code)" и "must_use"? Выглядит как какая-то ненужная магия.
     
     
  • 5.83, Аноним (78), 12:04, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Дак растаманы! же писали! В здравом уме такое! не придумать!
     
     
  • 6.153, anonymous (??), 11:34, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Лично меня вполне устраивает объяснение ниже.
     
  • 5.85, Твайлайт Спаркл (ok), 12:28, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > А зачем нужны "allow(dead_code)" и "must_use"? Выглядит как какая-то ненужная магия.

    allow(dead_code) действительно не нужен, он заглушает предупреждения, что не все варианты enum'a используются.

    А вот must_use довольно крут. Он добавляет предупреждение на такой код:
    status.color();
    То есть возвращаемое значение должно быть использовано (как минимум присвоено в переменную).
    let _ = status.color();

     
     
  • 6.138, anonymous (??), 01:27, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Понятно. Makes sense.
     
  • 3.51, Ilya Indigo (ok), 07:19, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    abstract class News
    {
        public const status =
        [
            'draft' => 'grey',  
            'published' => 'green',  
            'arcived' => 'red',
        ];

        public static function test()
        {
            ...
            self::status['arcived']; // 'red'
            ...  
        }

    }

    News::status['arcived']; // 'red'

    Зачем добавили эти enum-ы с таким синтаксисом вообще не понятно.
    Даже от match была польза, а зачем нужны такие enum-ы не представляю.

     
     
  • 4.73, Онаним (?), 11:45, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Окей, а теперь расширь это на два признака. И получишь шляпку в два массива.
    А теперь расширь на вычисляемое.

    Кстати для просто одиночного типозначения метод с match не нужен, есть value(), который можно задать в case.

    Так-то нынешний Enum - это по сути сахар вокруг специфичного класса.

     
     
  • 5.77, Ilya Indigo (ok), 11:55, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Я ни черта не понял из того что Вы написали.
    Да и ф-ии value() в php нет.
     
     
  • 6.107, Здрасьте (?), 16:40, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Функции нет, есть свойство. Если значения присвоены, их можно получить через ->value
     
  • 3.52, x3who (?), 07:25, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не отменяет вопроса зачем там case. Ведь "DRAFT;" отличается от "public function x(...)" если уж так хочется добавить методы.
     
     
  • 4.106, Здрасьте (?), 16:21, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Потому что я могу захотеть назвать значение enum «public».
     
     
  • 5.144, Аноним (78), 07:00, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    До такого разве что растаманы могут додуматься.
     
     
  • 6.150, x3who (?), 10:54, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > До такого разве что растаманы могут додуматься.

    Вполне законное желание для enum. Допустим у тебя в приложении есть публичные и приватные данные. Тут сам бог велел присобачить к ним (к данным) соотв флажок перечислимого типа. Раст тут ни при чем.

     
  • 5.151, x3who (?), 10:55, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что я могу захотеть назвать значение enum «public».

    Не "public function x(...)" же.

     

  • 1.49, Какаянахренразница (ok), 07:10, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    А чё, 5.6 больше не в моде?
     
  • 1.55, Ilya Indigo (ok), 07:50, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну что за новость на коленке?
    Тут https://www.php.net/releases/8.1/ru.php даже больше описано.
    А сюда https://www.php.net/manual/ru/migration81.php даже и не заглядывали.
     
     
  • 2.105, Аноним (105), 16:20, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> https://www.php.net/releases/8.1/ru.php
    > Ускорение WordPress на 3.5%

    Все, пошел обновляться

     

  • 1.57, Аноним (53), 08:06, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И зачем все это нужно, реально какой то с++ получился.
     
     
  • 2.60, Стас Михайлов (?), 09:55, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вайтишников пугать. И поделом.
     
  • 2.65, Сергей Борисович Кореневский (?), 11:11, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ваш вывод говорит что вы на пыхе сложней калькулятора ни чего не делали.
     
  • 2.74, Онаним (?), 11:46, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну пых так-то изначально сильно плюсы-подобен, поэтому не удивительно.
    Перегрузку операторов вот никак, но вроде RFC есть уже.
     
  • 2.143, Аноним (78), 06:58, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > реально какой то с++ получился

    Может, веб-программисты от этого поумнеют хоть немного?

     
     
  • 3.146, Аноним (53), 07:49, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если будут писать на пыхе, то точно не поумнеют
     

  • 1.61, Аноним12345 (?), 10:14, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ломать - не строить
     
  • 1.86, Аноним (86), 12:31, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    И снова ломают совместимость :(
     
     
  • 2.142, Аноним (78), 06:55, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это удел современных программистов :( php, Qt, раст...
     
  • 2.157, докерман (?), 21:53, 27/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а кто заставляет переходить если не надо определенных плюшек?
     
     
  • 3.158, Анонимный (?), 03:33, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    end of life and is no longer supported
     
  • 2.159, Gemorroj (ok), 10:59, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    и правильно делают. дебилы, которые $GLOBALS удаляют (да и вообще используют) должны страдать
     
     
  • 3.166, Онаним (?), 22:32, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    $GLOBALS надо было ещё в пятёрке выкинуть.
    Вот просто взять, и выкинуть. Мучений и нытья было бы гораздо меньше.
     

  • 1.91, Аноним (91), 13:29, 26/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    php - personal home page
    emacs - editor macros

    Nickto ne zabyt. Nichto ne zabyto.

     

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



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

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