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

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



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
Поделиться с друзьями
-->

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


  1. SamDark
    27.02.2017 00:55
    +1

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


    1. zelenin
      27.02.2017 02:28
      +4

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


      1. catanfa
        01.03.2017 00:04

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


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


  1. zelenin
    27.02.2017 02:33
    +2

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

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


    1. pronskiy
      27.02.2017 02:46
      +2

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


  1. nazarpc
    27.02.2017 07:34
    +1

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


    1. PQR
      27.02.2017 13:03
      +6

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

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

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

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


  1. bolk
    27.02.2017 08:00
    +2

    PHP — первый язык с современной криптографий в стандартной поставке — О принятом недавно предложении включить библиотеку Libsodium в ядро начиная с PHP 7.2.

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


    1. tzlom
      27.02.2017 20:16

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


      1. zelenin
        28.02.2017 01:45
        +1

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


        1. tzlom
          28.02.2017 12:22

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


          1. zelenin
            28.02.2017 12:32
            +1

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


            1. tzlom
              28.02.2017 13:42
              +3

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

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

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

              Будь это любая другая библиотека я бы с вами согласился, но конкретно с этой решение абсолютно правильное


  1. smple
    27.02.2017 17:26
    +1

    о psr/container теперь принят отлично ото раньше был container-interop, как раз заканчиваю свою библиотеку и сразу стандарт который она имплементит


  1. red_led
    28.02.2017 00:06

    list() Reference Assignment интересное предложение, но как должно работать

    [&$a, &$b] = [$b, $a];
    ?


    1. bolk
      28.02.2017 08:38

      Как

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

      Ровно так же.


      1. red_led
        28.02.2017 11:44

        Не логично. Если без ссылок, то

        [$a, $b] = [$b, $a];
        сделает не как вы написали, а поменяет местами значения. А с ссылками пролучается они должны указывать друг на друга? Или молча поменяться без ссылок? Или выдать варниг/нотис?


        1. bolk
          28.02.2017 11:59

          Нелогично ему :) Потому что у вас передача по значению. Представьте себе, что это просто цикл, который выполняет последовательные действия и всё встанет на свои места.

          Не запуская, попробуйте угадать результат (на PHP5):

          $a = []; list($a[], $a[]) = [1,2]; var_dump($a);
          
          $a = [1]; list($a[], $a[]) = $a; var_dump($a);
          


          1. red_led
            28.02.2017 12:17

            Ну, про эти примеры сто раз было написано когда 7ку выпутили: )


            1. bolk
              28.02.2017 12:21

              Я на это всё наткнулся за десятилетие до «семёрки». Ну и попробуйте объяснить себе второй пример в «семёрке». :)


              1. Arekusei
                01.03.2017 16:24

                А в семёрке то данный код работает совершенно иначе. Интересно.


  1. europanzer
    02.03.2017 13:50

    К сожалению, расширения yii2mod нельзя назвать гибкими. Если в приложении уже есть компонент с тем же именем, например 'image', не получится использовать расширение yii2mod/yii2-image. Думаю, это касается и остальных расширений.