.

Подборка свежих новостей, инструментов, видео и материалов из мира PHP.

Приятного чтения!

Этот дайджест подготовлен совместно с Insolita. Если понравился выпуск, плюсаните пост, пожалуйста.

⚡️️ Новости


  • Официально начата работа над Coding style PER
    Coding Style PER официально одобрен PHP-FIG и заменит PSR-12. Работы начаты в php-fig/per-coding-style.

    Это первый документ типа PER (PHP Evolving Recommendation), то есть «живой» стандарт. Теперь не надо будет выпускать очередной PSR-стандарт каждый раз при добавлении нового синтаксиса в PHP. Вместо этого PER будет обновляться по SemVer.
    Спасибо samdark.

  • 2021 год в русскоговорящем PHP-сообществе


    Подводим итоги 2021 года в PHP-сообществе, живая трансляция на YouTube 12 февраля 11:00 Мск/Минск, 10:00 Киев.

    На стриме будут: Александр Макаров, Валентин Удальцов, Кирилл Несмеянов, Адель Файзрахманов, Дмитрий Елисеев.

  • [RFC] Remove support for libmysql from mysqli
    В PHP 8.2 будет убрана поддержка libmysql в mysqli. Вряд ли это кто-то заметит, потому что по умолчанию используется mysqlnd.

  • PhpStorm 2022.1 Early Access Program
    Стартовала программа раннего доступа первого мажорного релиза IDE в этом году. Каждую неделю публикуем новые бесплатные для использования билды, в которых можно первым пощупать новые фичи.

    Фокус релиза — багфикс и производительность, но и без новых фич не обойдется. В первом билде обновления для метадаты .phpstorm.meta.php, улучшения для редактирования Markdown и другое.

  • [RFC] final class Collections\Deque
    В рамках инициативы по добавлению оптимизированных структур данных в PHP готово первое предложение.
    Deque — это двухсторонняя очередь, то есть элементы можно добавлять и удалять как в начало, так и в конец.

    Использовать можно везде, где были SplQueue или SplDoublyLinkedList и с ходу получить выигрыш в производительности, и уменьшить расход памяти. Также Deque актуален для долгоиграющих приложений, в которых используются большие массивы.

    Есть демо на WebAssembly: PHP 8.2 Deque RFC Demo.
    Скрытый текст
    $deque = new Collections\Deque(['first', 'second', 'third']);
    foreach ($deque as $offset => $value) {
        if ($value === 'second') {
            $deque->shift();
        } elseif ($value === 'third') {
            $deque->push('fourth');
        }
    }
    


???? Инструменты


  • sj-i/php-profiler — Сэмплирующий профайлер для PHP, который реализован на чистом PHP (FFI). Можно сгенерировать флейм-диаграммы, запустить вывод трейсов в режиме команды top и другое.
  • IvanGrigorov/VMValidator — Коллекция аттрибутов-валидаторов.
  • mrsuh/php-var-sizeof — Функция для получения размера памяти для любой переменной и обещает более точный результат по сравнению с memory_get_usage(). Требует PHP >=7.4 с FFI.
  • spiral/framework — Релиз long-running фреймворка теперь с поддержкой RoadRunner v2 и CycleORM v2.
  • Chetkov/php-clean-architecture — Инструмент для измерения качества, упрощения анализа и автоматизации контроля архитектуры приложений на PHP.
  • Hi-Folks/statistics — Пакет предоставляет набор разных статистических функций: медиана, мода, отклонение выборки и т.п.
  • php-soap — В рамках организации разрабатываются инструменты для работы с SOAP. Встроенное в PHP расширение ext-soap давно не поддерживается, поэтому вместо него стоит использовать имплементации на чистом PHP: php-soap/ext-soap-engine.
  • williarin/wordpress-interop — Пакет на основе Doctrine/DBAL для более удобного доступа к базе Вордпресса из других приложений на PHP.
  • Phel — Функциональный язык программирования, который компилируется в PHP. Является диалектом Lisp и вдохновлен Clojure.
  • tuqqu/go-parser — Парсер Golang на PHP 8.1. Транслирует Golang-код в AST. Применение пока не ясно.


Symfony




Laravel




???? Статьи




???? Сообщество


  • Mage-OS update January 2022 — После анонса форка Magento, Adobe одумались и обещают развивать опенсорсную Magento и не депрекейтить монолит. Но вот на своих ресурсах упоминать опенсорс версию не будут.
  • PHP Russia 2022 — Прием докладов открыт до 25 апреля 2022.
    Если вдруг у вас доклад не вписывается в темы на сайте, но тема всё-таки про PHP или на PHP — подавайте обязательно. Мы обожаем сюрпризы.
  • В PHP есть операторы с одной точкой, двумя, тремя и четырьмя. А как бы мог выглядеть с пятью?




Подписывайтесь на Telegram-канал PHP Digest.

Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, подпишитесь на Юлию в твиттере и поставьте плюс в пост, пожалуйста.


Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.

Прислать ссылку можно через форму или просто напишите мне в телеграм.
Поиск ссылок по всем дайджестам
Предыдущий выпуск: PHP-Дайджест № 220

Комментарии (16)


  1. egor_nullptr
    07.02.2022 16:03
    +1

    В PHP есть операторы с одной точкой, двумя, тремя и четырьмя. А как бы мог выглядеть с пятью?

    :.: как-то так


    1. joffer
      07.02.2022 16:41
      +1

      а почему :.: ? Почему не ..:. , например? Любите симметрию?)


  1. alfixer
    07.02.2022 16:10

    Почему именно точки? Есть же другие символы.


    1. BeMySlaveDarlin
      07.02.2022 16:23

      Варианты с точками с меньшей вероятностью будут вызывать коллизии в легаси пхп коде.

      Любые другие символы, увы, уже используются так или иначе в более сложных конструкциях и парсинг будет более сложным - следовательно скажется на производительности вм.

      Вероятно еще и размеры самих символов в таблице могут иметь значение, читаемость, семантика и что там еще волнует разработчиков языков и компиляторов к ним)


      1. alfixer
        07.02.2022 17:05

        @,#,^,~ вроде вообще не используются.

        Вероятно еще и размеры самих символов в таблице могут иметь значение, читаемость, семантика и что там еще волнует разработчиков языков и компиляторов к ним)

        Не думаю, что большое количество точек позитивно скажется на читаемости.


        1. pxz
          07.02.2022 17:14
          +3

          Ну вообще, все эти символы задействованы и парсеру известны. :)

          @ — Error Control Operator
          # ­— Комментарий
          ^ И ~ — Побитовые операции. XOR и отрицание соответственно.


          1. alfixer
            07.02.2022 17:28
            -4

            В самом деле. Никогда не встречал, чтоб в php экранировали решеткой.


            1. NiceDay
              08.02.2022 03:37
              +2

              мало того, сейчас через решетку пишутся атрибуты


      1. alfixer
        07.02.2022 17:09

        Но для начала хотя бы знать, для каких операций они будут нужны.


  1. a1ez
    07.02.2022 16:29

    По поводу структур данных.

    С удивлением обнаружил что есть WeakMap, но нет WeakHashMap что сильно сужает количество кейсов для создания например кеша на основе WeakReference'ов.

    Очень странное решение!


    1. pronskiy Автор
      07.02.2022 16:36

      А почему нельзя сделать кеш на основе WeakMap или массива WeakReference'ов? Последнее разве и не будет WeakHashMap?


      1. a1ez
        07.02.2022 16:56
        +1

        array<array-key,WeakReference<T>> -- GC будет чистить значение внутри WR, а сам массив будет расти потихоньку (если его не чистить руками, но в чём тогда смысл брать WR).

        А на основе WeakMap -- там же объекты в ключах, значит идентификатор кешируемого объекта будет в значении, т.е. надо будет итерироваться чтобы найти нужное, т.е. O(n).

        Ну для небольших карт это прокатит, но в целом решение не масштабируемое.


    1. Tatikoma
      07.02.2022 19:32

      А ещё есть LinkedList, Hashmap (в виде массивов PHP), но нет LinkedHashMap.


  1. mnogokotin
    07.02.2022 17:13

    спасибо )


  1. skiedr
    07.02.2022 18:27
    +1

    Кажется мы обсуждаем операторы игры тетрис...


  1. THQSql
    08.02.2022 12:11
    +1

    tuqqu/go-parser — Парсер Golang на PHP 8.1. Транслирует Golang-код в AST. Применение пока не ясно.

    Как вариант написание неких лямбда функций в админке, чтоб потом быстро выполнять какие-то операции. Эта библиотека может подойти для валидации кода, чтоб не запускать отдельно линтеры и билдер Go.