Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
- Конец поддержки HHVM в популярных проектах — Если еще каких-то два года назад альтернативная виртуальная машина PHP от Facebook могла похвастаться внущительным преимуществом в производительности, то сегодня разница незначительна. Согласно статистике Composer, доля пользователей HHVM меньше чем PHP 5.3 и составляет 0.36%. Тем не менее спасибо команде HHVM за то, что подтолкнули PHP к развитию.
Начиная с версии Symfony 4 фреймворк не будет поддерживать HHVM. В Laravel поддержка прекращена с версии 5.3. В Yii — прекращение запланировано в версии 2.1. Прекращается поддержка драйвера MongoDB для HHVM. А также останавливается поддержка в Doctrine, Twig (начиная с версии 2), Silex, и Swiftmailer. - Codeception 2.3 — Обновление популярного инструмента тестирования. Под капотом поддержка PHPUnit 6, шаблоны инсталляций, и другие улучшения.
- Deployer 5
PHP
- RFC: UUID — Предлагается добавить в ядро класс
UUID
для генерации уникальных значений согласно стандарту RFC 4122. В рамках реализации доступны полифилы для версий PHP < 7.2. Кроме того, есть предложение сделать устаревшим функцию uniqid(), которая вопреки названию не гарантирует возврат уникального значения. - RFC: Object typehint — Идет голосование за предложение добавить тип
object
в качестве варианта для тайпхинтинга. Такой тип можно будет использовать для любых объектов, что может быть полезно когда конкретный тип заранее не известен.
Инструменты
- wapmorgan/Imagery — Обертка над GD для работы с изображениями. Прислал wapmorgan.
- IcyApril/WhatsChanged — Позволяет запускать PHPUnit тесты только для классов, которые были изменены. Пост в поддержку.
- kitetail/zttp — Обертка вокруг Guzzle с лаконичным и удобным синтаксисом.
- teresko/palladium — Компонент для аутентификации и регистрации пользователей.
- iranianpep/botonomous — Фреймворк для создания ботов для Slack.
- mcustiel/phiremock — Инструмент для мока HTTP-запросов и REST-сервисов для использования в приемочных тестах.
Материалы для обучения
Symfony
- EasyCorp/easy-deploy-bundle — Бандл без сторонних зависимостей для бесшовного развертывания Symfony-приложений.
- Архитектура и код веб-сайта для президента Франции
- Неделя Symfony #542 (15-21 мая 2017)
- Неделя Symfony #543 (22-28 мая 2017)
Yii
- Разработка на Yii2: Добавляем голосования, комментарии, шэринг
- YiiConf 2017 16 июня в Москве — сформирована программа
- Альтернативная организация проекта на Yii2 — Система плагинов и способ структурирования проектов. Прислал hiqsol.
Laravel
- spatie/laravel-medialibrary — Позволяет прикреплять файлы к любым Eloquent-моделям.
- davestewart/laravel-sketchpad — Дев-интерфейс для быстрой разработки на Laravel.
Zend
- Функция list() и практическое использование деструктурирования массивов
- PHP Language Trivia — Слайды доклада Никиты Попова об интересных особенностях PHP.
- Автодополнение скриптов Composer в командной строке
- Извлечение объектов-значений
- Чеклист по безопасности веб-приложений
- Зашифрованная база с возможностью поиска на PHP и SQL
- Тестирование производительности с помощью Siege
- Шина сообщений для PHP-приложений
- Готовим локальную среду Docker для разработки на PHP
- Видео докладов Symfony St. Petersburg Meetup #1
- Готовимся к собеседованию по PHP: Всё, что вы хотели узнать об интерфейсах, совместимости сигнатур и не побоялись узнать
- Делаем GraphQL API на PHP и MySQL. Часть 2: Мутации, переменные, валидация и безопасность, Часть 3: Решение проблемы N+1 запросов
- Тайп-хинтинг по всем канонам полиморфизма в старых версиях PHP
- Производительность I/O бэкэнда: Node vs. PHP vs. Java vs. Go
- Ещё одна система логирования, теперь на ElasticSearch, Logstash, Kibana и Prometheus
- Как правильно писать логи
- Построение модульной архитектуры приложения на Forwarding-декораторах (авторский перевод)
- SQL vs ORM
- Учим нейронную сеть геометрии
- Потоки выполнения и PHP
- О дженериках в PHP и о том, зачем они нам нужны
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Быстрый поиск по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 108
Комментарии (15)
ArthurKushman
29.05.2017 19:51Ребят добавьте пожалуйста в подпункт Laravel пункта «Материалы для обучения» raml-json-api, если несложно.
zalexz
30.05.2017 11:48Может кто-нибудь в курсе: в PHP не собираются случайно добавить кросс-платформенный API для мониторинга изменений в файловой системе? FAM давным давно устарел, и другого встроенного способа определить, какие именно файлы в директории изменились или были добавлены/удалены нет.
pronskiy
30.05.2017 13:08Насколько я понимаю, во всех вотчерах файловой системы это реализуется +- одинаково:
Linux: inotify
Mac OS X: FSEvents, kqueue
FreeBSD/BSD: kqueue
Windows: ReadDirectoryChangesW
Для всех: поллинг и сравнение снэпшотов
По крайней мере так в fs.Watch из Node.js, Watchdog на Python, Guard на Ruby.
Либы на PHP, которая нормализует все это похоже пока нет.zalexz
30.05.2017 13:59Видимо, вы имели в виду, что вместо использования нативных событийных API без поллинга, которые есть в Win, Lin, Mac, BSD, всякие разные языки программирования используют поллинг и сравнение снэпшотов?
Очень нужная и полезная штука, и, к сожалению, никто пока не сделал единый удобный интерфейс хотя бы в виде либы на C/C++, которая бы легко встраивалась в модуль любого языка. fswatch, к сожалению, не годится на такую роль по разным причинам.pronskiy
30.05.2017 14:46Имею в виду, что кроме нативных API, в разных либах реализован и поллинг как fallback решение.
А почему fswatch не годится? У меня не было опыта с ним, поэтому интересно какие подводные камни.zalexz
30.05.2017 14:56+1Для начала, попробуйте хотя бы его собрать под линукс, вин и мак (особенно вин!). Следующий шаг — попробуйте запустить то, что собралось, чтобы оно действительно работало (со всеми нужными вам _нативными_ мониторами). Следующий шаг — попробуйте использовать собранные бинарники со всеми их зависимостями на других машинах. Бонусом сыпутся нюансы при использовании — были неожиданные отличия в самом мониторинге под разными осями при одних и тех же параметрах командной строки (сейчас не вспомню точно, какие).
На маке лучше подтягивать бинарник через brew, на линуксе у меня получилось собрать рабочий бинарник без зависимостей, а под винду ничего не вышло. Через пару часов возни плюнул и написал свою простую утилиту, которая временно и коряво решила мои базовые задачи.
Movimento5Litri
31.05.2017 11:40+1Производительность I/O бэкэнда: Node vs. PHP vs. Java vs. Go
Вот это уберите пожалуйста, некомпетентная статья которую следовало бы озаглавить
«Перепишите ваш проект на Go»
В качестве аргумента там сравнение с PHP 5.4
SonicGD
По хорошему, HHVM даже как то жаль. Понятно, что Facebook решает свои задачи, но было бы не так и плохо иметь здоровую конкуренцию. Как вариант, было бы интересно увидеть Hack, который запускается на обычном PHP, как этакий Typescript.
OnYourLips
Проблема HHVM и Hack в том, что они не совместимы с PHP. Не любой PHP код будет работать на HHVM, PHP код не будет валидным Hack кодом.
HHVM/Hack сами добровольно отказались от экосистемы PHP.
VolCh
Не просто несовместимы, а чем дальше, тем несовместимость больше, тем больше костылей для них требуется.
pbatanov
Там основная проблема в том, что HHVM перестал быть совместим даже с композером
тык
тык