26 февраля в 23:43

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
Автор: @pronskiy

Вакансии компании Zfort Group

Комментарии (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. Думаю, это касается и остальных расширений.

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

Самое читаемое Разработка