PHP-Дайджест № 82 – интересные новости, материалы и инструменты (14 – 27 марта 2016)



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

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


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




    PHP


    • RFC: Typed Properties — Предлагается реализовать типизированные свойства:
      class Foo {
        public int $int = 1;
        public float $flt = 2.2;
        public array $arr = [];
        public bool $bool = false;
        public string $string;
        public callable $callable;
        public stdClass $std;
        public OtherThing $other;
        public $mixed;
      }
      
    • Трекер PHP RFC — Ресурс агрегирует информацию по всем RFC, а также доступна статистика контрибьюторов.
    • php.internals: Add spaceship assignment operator — Ироничное сообщение от Никиты Попова по поводу предложений добавить операторы ??= и ?:=. Для консистентности Никита предлагает добавить еще следующие сокращенные операторы:
      $a <=>= $b;
      // эквивалентно
      $a = ($a <=> $b);
      
      $a ==== $b;
      // эквивалентно
      $a = ($a === $b);
      


    Инструменты


    • Ocramius/PSR7Csrf — Генератор/валидатор CSRF-токенов на PSR-7 без хранилища данных.
    • ratchetphp/Pawl — Асинхронный WebSocket клиент.
    • spatie/menu — Генератор HTML меню. Пост в поддержку.
    • producerphp/producer.producer — CLI-инструмент для автоматизации процесса релиза PHP-пакетов. Пост от автора в поддержку.
    • Swader/nofw — Скелет приложения без фреймворков.
    • kelunik/acme-client — Сервис Let's Encrypt позволяет бесплатно генерировать подтвержденные SSL-сертификаты. По ссылке PHP-клиент для Let's Encrypt для тех кому не подходит оригинальный на Python. Пост об использовании.
    • sitepoint/Rauth — ACL для классов и методов на основе аннотаций. Туториал по использованию.
    • lcobucci/jwt — Простая библиотека для работы с JSON Web Token.
    • ptlis/conneg — Content Negotiation для PHP.
    • niklongstone/regex-reverse — Генерирует строку на основе регулярного выражения.
    • Fakerino/Fakerino — Генератор тестовых данных, альтернатива Faker.
    • jobbyphp/jobby — Продвинутый менеджер cron-задач.
    • Codeception/AspectMock 1.0 — Библиотека для создания тестовых двойников, позволяющая делать моки буквально для всего.
    • php-composter/php-composter — Управление Git-хуками с помощью Composer.


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




    Аудио и видеоматериалы




    Занимательное




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

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

    Присылайте ссылки на интересные статьи или полезные инструменты, которых не было в PHP-Дайджестах, и ваше имя будет рядом с присланной ссылкой в выпуске.

    Прислать ссылку
    Быстрый поиск по всем дайджестам
    Предыдущий выпуск: PHP-Дайджест № 81

    Zfort Group 272,30
    Компания
    Поделиться публикацией
    Комментарии 29
      • +11
        Сознательно не включил :-) RestAPI — явно из категории "вредные советы", а в посте про Битрикс типичный флейм.
      • 0
        PhpStorm научился держать живым коннект, чтоб без пауз изменения на сервак заливать. Лет 5 сидел в Zend Studio 5.5 дожидаясь этой фичи.
        • +2
          А он же и раньше умел, нужно было открыть соединение в окошке "remote host", после этого file transfer использовал это соединение
          • 0
            Этот воркэраунд работал только до десятой версии.
            • 0
              Нет, раньше он этого не умел, ссылку ниже правильную дали: http://blog.jetbrains.com/phpstorm/2016/03/changes-to-remote-connection-keep-alive-in-phpstorm-2016-1/ Там правда были варианты со всякими костылями, типа создания туннеля с локали, но это уже не про PhpStorm.
            • 0
              Вы про remote host? С 9 версии есть.
          • 0
            Честно говоря, так и не понял use case для использования генераторов случайных тестовых данных. А все примеры в Сети: просто констатация факта — вы можете использовать тестовые данные. Кто использовал Faker и иже с ними в реальных проектах? Поделитесь примером, когда это реально работает.
            • 0
              Клиенту гораздо приятнее и понятнее смотреть демо проекта, где будут более-менее осмысленные слова и выражения вместо lorem ipsum-ов и фраз вида «fwhufgw gregheur».
              • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  Ваш пример имеет право на жизнь, но честно говоря я ожидал немного иного примера. Обычно Faker приводится в контексте юнит-тестирования. Вот как это прикрутить к юнит-тестам, я понять не могу. Во всех примерах (тот же Laravel) обычно пишут, вот смотрите: вы можете создать модель User и заполнить ее реальными данными. Ну ок, и чё??? Получается, что никакие assertEquals не подходят, ибо данные сгенерированы случайно. То есть максимум, что я могу проверить — какую-нибудь логику валидации, что например я передал в setEmail корректный email или нет, что имя пользователя длиннее 5 символов или нет. Но только для такого применять здоровенную библиотеку… Не знаю, мутно как-то...
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Вот например Там есть код теста. Реально они тупо проверяют assertInstanceOf
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • 0
                          Там при вызове функции create и seed есть параметр $attr, который позволяет переопределить нужные нам данные, таким образом у нас объект валидный за счет того что все поля заполнены, и заполнены верно, а нужные нам поля мы можем без проблем изменить взяв их значение допустим из dataProvider.
                      • 0
                        Нам, к примеру, потребовалось в Elasticsearch посмотреть сколько места будут занимать данные и как будут выполняться запросы. Конечно, реальных данных нам никто не даст, NDA, всё такое. Первый велосипед был быстро набросан в скрипте на php, примерно генерируя то, что нам нужно. После уже обнаружили esBench, который собирает инфу на реальных данных, а потом мы можем по готовым шаблонам залить данные и сделать оценку. Но какой-то он заброшенный… У php ещё есть шанс :) можно будет посмотреть предложенные в этой статье инструменты.
                    • 0
                      Представьте что вы пишите тест (внезапно да), и у вам надо проверить как система обрабатывает какие-то данные. Данных много, а вам важны только 2-3 значения, все остальное — можно просто сгенерировать.
                      У меня такие ситуации появляются чуть ли не каждый день.
                      • 0
                        Извините, представить получается с трудом. Если система не работает с какими-то данными, то это мертвые данные — зачем они нужны? Если ваш тест не покрывает какую-то функциональность, а работа с такими данными ведется, то это неполный тест — толку от такого нет.
                        • 0
                          толку от такого нет.

                          Другую часть этих данных покрывает другой тест кейс, третью — третий. В рамках тест кейса обычно тестируются важные вещи, а такие вещи как "имя пользователя" или его день рождения можно сгенерить для правдоподобности.
                          Если вам интересно реальное применение — вот:
                          https://github.com/nelmio/alice
                          • 0
                            Про эту либу слышал, сама по себе ссылка не приоткрывает завесу тайны, но пошел там по ссылкам и нашел-таки реальный пример!!! Так что спасибо за наводку
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • +1
                        Хоть убейте, но я не понимаю зачем нужны все эти spaceship операторы. Выглядят они не очевидно, код не читабелен.
                        • НЛО прилетело и опубликовало эту надпись здесь
                          • +1
                            Упомянутые в статье assignment shapceship — это дичь какая-то

                            Собственно в этом и суть, и именно по этой причине Никита иронично отписался в php-internals.
                            Зачем так повторно использовать переменные?

                            Картинка про сарказм.
                        • +1
                          спасибо
                          • +1
                            Спасибо, как всегда есть что-то интересное.
                            • +1
                              Ещё одна хорошая новость — 10 апреля выйдет драйвер PDO MSSQL для PHP7 https://github.com/Azure/msphpsql/issues/58

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

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