PHP-Дайджест № 103 – интересные новости, материалы и инструменты (12 – 26 февраля 2017)



    Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
    Приятного чтения!

    Новости и релизы



    PHP


    • RFC: list() Reference Assignment — Принято на голосовании небольшое улучшение для list() позволяющее использовать ссылки:

         $array = [1, 2];
         list($a, &$b) = $array;
      
      // Эквивалентно:
      
          $array = [1, 2];
          $a = $array[0];
          $b =& $array[1];
      

    Инструменты


    • wapmorgan/MediaFile — Библиотека для чтения метаданных из аудио/видео файлов различных форматов.
    • Fistlab PHP Components — Инициатива по разработке часто используемых компонентов на различных языках программирования. Работа начата с PHP и уже готовы контейнер, репозиторий, бд.
    • JWHennessey/phpInsight — Слегка заброшенная, но интересная библиотека для анализа тональности текста. Альтернативное решение: mizterp/caroline.
    • paragonie/PHP-Cookie — PHP 7 библиотека для безопасной работы с куками. В тему пост об использовании SameSite куки для защиты от CSRF.
    • www.php-middleworld.com — Ресурс с подборкой PSR-7 совместимых middleware-компонентов.
    • php-ai/php-ml — Реализацией алгоритмов машинного обучения на PHP.
    • miniflux/miniflux — Минималистичная читалка RSS.
    • phanan/kupo — Автоматизированный чек-лист для проверки сайта перед запуском.
    • webonyx/graphql-php — Реализация спецификации GraphQL. Порт эталонной реализации на JavaScript graphql/graphql-js.
    • sebastianfeldmann/phpbu — Инструмент для создания резервных копий файлов и баз данных. Умеет шифровать бэкапы и отправлять в хранилище (Amazon s3, Dropbox, rsync, SFTP, FTP).
    • web-push-libs/web-push-php — Реализация протокола WebPush для отправки уведомлений в браузер.
    • thephpleague/fractal — Библиотека для трансформации и вывода данных в API, умная замена json_encode(). Свежий туториал по использованию.

    Материалы для обучения



    Спасибо за внимание!

    Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
    Вопросы и предложения пишите на почту или в твиттер.

    Прислать ссылку
    Быстрый поиск по всем дайджестам
    Предыдущий выпуск: PHP-Дайджест № 102
    Метки:
    Zfort Group 385,65
    Компания
    Поделиться публикацией
    Комментарии 22
    • +1

      Fistlab PHP Components без намёка на документацию. Как вообще так можно?

      • +4

        если посмотреть код, то ясно, что это даже не стоит обсуждать — какие-то поделки, коих тысячи на гитхабе, и каждый программист такое делал. Очень странно, что такое попало в статью.

        • 0

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


          Хотя не совсем понятно, для чего всё-таки это может понадобиться..

      • +2
        Awesome Doctrine — Подборка полезных ресурсов по Doctrine. Прислал im_special_one.

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

        • +2
          Хорошая возможность дополнить, для этого же и создаются такие репозитории :-)
        • +1

          Пятиминутка PHP очень странная штука. Мало того, что выходит нерегулярно, так ещё и не пятиминутка ни разу, а на засыпку — даже не о PHP. Может переименовать стоит?

          • +6
            Выходит нерегулярно — таков он творческий процесс, если есть желание что-то записать — срочно пишу!

            Не о PHP — выпуск о Rust был первым «не о PHP», и, возможно его стоило бы опубликовать в рамках какого-то другого проекта… но у меня нет планов по записи серии подкастов о Rust или подкаста «о программировании в целом», так что публикую в уже известный и готовый канал распространения.

            Стоит ли переименовывать в «Подкаст о PHP и не только» — стоит, если есть планы частенько записывать выпуски из серии "… и не только", но пока таких планов нет.

            Оставайтесь на связи, я планирую продолжать выпуски именно о PHP и в формате 5-10 минут (по большей части)!
          • +2
            PHP — первый язык с современной криптографий в стандартной поставке — О принятом недавно предложении включить библиотеку Libsodium в ядро начиная с PHP 7.2.

            Опять всё в процедурном стиле :(

            • 0
              А чего вы ожидали? Libsodium на си написан.
              • +1

                php api к Libsodium не зависит от исполнения самой Libsodium

                • 0
                  А вот тут вы не правы, это библиотека криптографии, поэтому накручивая любые штуки к ней вы теряете гарантии что она работает правильно, поэтому только прямой биндинг API. А дальше уже можете делать что угодно, но никаких гарантий что это будет правильно (с точки зрения криптографии в первую очередь) работать.
                  • +1

                    прямой биндинг и использование неймспейсов/ооп-подхода опять же не пересекаются. это не навороты.

                    • +3
                      Никто не запрещает вам сделать ООП библиотеку которая будет внутри использовать эти функции, но в криптографии есть места, когда нужно чётко представлять циклы жизни объектов, например хранилища ключей, которые должны быть очищены специальной функцией которая их сотрёт, а не просто освободит память.

                      Плюсы ООП:
                      — простой API

                      Минусы ООП:
                      — Нельзя воспользоваться примерами от оригинальной библиотеки (и это плохо, т.к. примеры написаны специалистами по криптографии и авторами библиотеки, а новые примеры напишет неизвестно кто и вероятность того что в них не будет ошибок ниже чем у примеров к оригинальной библиотеке)
                      — Нужно писать документацию, разъясняющую циклы жизни объектов, как выполняются копирования итд
                      — Потенциальные проблемы с GC и финализацией структур не в том месте где она должна произойти
                      — Больше трудозатрат
                      — Потенциальные ошибки в работе с памятью

                      Будь это любая другая библиотека я бы с вами согласился, но конкретно с этой решение абсолютно правильное
            • +1
              о psr/container теперь принят отлично ото раньше был container-interop, как раз заканчиваю свою библиотеку и сразу стандарт который она имплементит
              • 0
                list() Reference Assignment интересное предложение, но как должно работать
                [&$a, &$b] = [$b, $a];
                ?
                • 0
                  Как

                  $a = &$b; $b = &$a;

                  Ровно так же.
                  • 0
                    Не логично. Если без ссылок, то
                    [$a, $b] = [$b, $a];
                    сделает не как вы написали, а поменяет местами значения. А с ссылками пролучается они должны указывать друг на друга? Или молча поменяться без ссылок? Или выдать варниг/нотис?
                    • 0
                      Нелогично ему :) Потому что у вас передача по значению. Представьте себе, что это просто цикл, который выполняет последовательные действия и всё встанет на свои места.

                      Не запуская, попробуйте угадать результат (на PHP5):
                      $a = []; list($a[], $a[]) = [1,2]; var_dump($a);
                      
                      $a = [1]; list($a[], $a[]) = $a; var_dump($a);
                      
                      • 0
                        Ну, про эти примеры сто раз было написано когда 7ку выпутили: )
                        • 0
                          Я на это всё наткнулся за десятилетие до «семёрки». Ну и попробуйте объяснить себе второй пример в «семёрке». :)
                          • 0
                            А в семёрке то данный код работает совершенно иначе. Интересно.
                • 0
                  К сожалению, расширения yii2mod нельзя назвать гибкими. Если в приложении уже есть компонент с тем же именем, например 'image', не получится использовать расширение yii2mod/yii2-image. Думаю, это касается и остальных расширений.

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

                  Самое читаемое