Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 RC 1, Laravel 5.5 LTS, чистый код на PHP, предложения из PHP Internals, видео с конференций и митапов, и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.2.0 RC 1 — Стартовал цикл релиз-кандидатов ветки 7.2. Ожидается всего не менее 6 выпусков для стабилизации. Тем временем можно почитать что нового в PHP 7.2: тут и тут.
- PHP 7.0.23, PHP 7.1.9
- Laravel 5.5 LTS — Под капотом filp/whoops для ошибок, автообнаружение пакетов, улучшения очереди задач, улучшения исключений, фронтенд пресеты для React, и многое другое.
- Behat 3.4.0 — Обновление популярного BDD-фреймворка.
- NGINX Unit — Анонсирован сервер приложений от команды Nginx с поддержкой PHP.
PHP Internals
- RFC: Operator functions — Для всех операторов, кроме присваивания, предлагается добавить одноименные функции, чтобы их можно было использовать в качестве аргументов функций высшего порядка:
// Суммирует элементы массива (Эквивалент array_sum()) $sum = array_reduce($terms, '+', 0);
- Add Fiber (sackful coroutine) support — Интересное улучшение генераторов в PHP, которое позволило бы упростить асинхронный код. Пока не оформлено в виде формального RFC, но уже имеется черновой пул-реквест.
Инструменты
- Botman 2.0.0 — Фреймворк для создания чат-ботов. Из коробки поддерживает: Slack, Telegram, Nexmo, HipChat, Facebook Messenger, WeChat. Туториалы Laravel + Botman: Telegram, FB Messenger, Slack.
- nkkollaw/zubr — Инструмент призван исправить проблемы встроенных функций PHP: добавлены неймспейсы, консистентное именование и порядок аргументов.
- Prooph — Инструменты для реализации CQRS и Event Sourcing на PHP. Туториал. Что такое Event Sourcing и почему это круто.
- parpalak/rose — Встраиваемый поисковый движок с поддержкой русского языка.
- spatie/fractalistic — Обертка над thephpleague/fractal добавляющая короткий текучий интерфейс.
Материалы для обучения
Symfony
- Пакеты Symfony были загружены более 1 миллиарда раз
- Использование пользовательских типов в Symfony и Doctrine
- Не используйте Сущности в формах Symfony. Используйте лучше объекты значения
- Джентльменский набор Doctrine 2 для Symfony 3.3.6: Создание сущности, ассоциации и рекурсивные связи
- Неделя Symfony #557 (28 августа — 3 сентября 2017)
- Неделя Symfony #558 (4-10 сентября 2017)
Yii
- yiisoft/yii2-debug 2.0.10
- Интервью с Jeff Reifman: О Yii и не только
- Alexander Makarov: Yii development notes #13
- Пишем GraphQL API сервер на Yii2 с клиентом на Polymer + Apollo. Часть 1. Сервер, Часть 2. Клиент, Часть 3. Мутации, Часть 4. Валидация. Выводы
Laravel
- Laravel Certification — Анонсирована программа сертификации по фреймворку.
- Lumen 5.5 — Также обновился микрофреймворк из экосистемы Laravel.
- bestmomo/nice-artisan — Веб-интерфейс для Laravel Artisan. Прислал im_special_one.
- Аутентификация с помощью JWT в Lumen 5.4
- Разбираемся с Pipelines в Laravel
- Laravel 5 Отношения и жадная загрузка в Eloquent
Zend
- Быстрая разработка ентерпрайз-приложений на Zend Expressive
- Быстрая разработка модулей Zend Expressive
Async PHP
- clue/php-ami-react — Событийный доступ к Asterisk Manager Interface на базе ReactPHP.
- Резолвим DNS асинхронно с помощью ReactPHP
CMS
- Месяц WordPress: август 2017
- Погружение в ценообразование Magento 2, убираем копейки после скидок
- Magento Tech Digest #2 (August 21 — September 3, 2017)
- Правильный путь использования DIC
- Генерация автолоадера для легаси-кода
- Обновление старых хешей паролей на bcrypt
- Selenium для всех: как мы учим QA-инженеров работать с автотестами
- Декларативное программирование в web-е
- Опыт разработки высоконагруженной системы в рамках HighLoad Cup
- По следам highloadcup: php vs node.js vs go, swoole vs workerman, splfixedarray vs array и многое другое
- Чистый код на PHP — Адаптация Clean Code Роберта Мартина для PHP.
Аудио и видеоматериалы
- Митап PHP of BY #24: Движки таблиц MySQL, Про аспекты работы с датой и временем
- PHP Roundtable #066: Docker и переход с Vagrant
- Видео докладов с Laracon US 2017 — Прислал Nicklasos.
Занимательное
- THT — Язык программирования транслируемый в PHP. Смесь PHP и JavaScript.
- Как PHP был “Serverless” еще 20 лет назад
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Быстрый поиск по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 115
Комментарии (9)
Akdmeh
11.09.2017 10:13+1Я не в первый раз высказываю мнение, что библиотеку похожую на github.com/nkkollaw/zubr (в которой нормализированы функции для строк и массивов) нужно реализовать на уровне языка. То есть, оставить legacy в виде старых функций напр., strlen, но при этом добавить новые классы, в которых все аргументы и возвраты будут адекватно систематизированы.
А пока приходится использовать подобные библиотеки, которые отличные, но имеют фатальный недостаток — они не стандартизированы на уровне языка, поэтому будут использоваться очень малой частью разработчиков.dizzyman
11.09.2017 10:55+2По поводу стандартизации имен функций уже есть RFC созданное 2,5 года назад — wiki.php.net/rfc/consistent_function_names, но, к сожалению, оно не двигается.
Akdmeh
11.09.2017 11:00+1Да, видел это RFC (благодаря PHP-Дайджесту, конечно!). Очень жаль. Хотя она больше фиксит существующую библиотеку функций, а мне кажется интересной идея работы со строкой как с объектом (как в Python), но это, очевидно, будет создавать дополнительный расход памяти, если не придумать какое-то хитрое поведение/хак, который и так усложнит непростую историю PHP.
Заодно сразу же можно было бы реализовать мультибайтовость строк.
Конечно, уверен, что есть десятки библиотек (и библиотека zubr одна из них), но их проблема в том, что о них мало знают и они не закреплены как рекомендованные на уровне языка/документации.Fesor
11.09.2017 16:24+3идея работы со строкой как с объектом (как в Python)
и приведет к проблеме манкипатчинга. Намного интереснее выглядит pipe-оператор:
$result = 'Hello, habrahabr' |> strlen($$) |> pow($$, 2) |> range(0, $$) |> array_map($someTransformation, $$);
почему я так считаю:
- подход проще в расширении. В классами/объектами без манкипатчинга вы будете ограничены определенным набором функций. Функции же можно добавлять столько сколько вы хотите. и пайп оператор справится.
- с точки зрения синтаксиса такой вариант намного проще и его можно комбинировать с цепочками вызовов:
$collection = $myObjects ->map($someTransformation) ->reduce($calculateSum) |> pow($$, 2) |> new SomeStats($$);
будет создавать дополнительный расход памяти, если не придумать какое-то хитрое поведение/хак
Для примитивных типов можно просто сделать схожий синтаксис, но не делать все вещи полноценными объектами. Схожие "хитрые поведения/хаки" используются во многих языках программирования. Если этого не делать — все оптимизации php7 и выше пойдут коту под хвост.
Заодно сразу же можно было бы реализовать мультибайтовость строк.
расскажите пожалуйста какие у вас на сегодняшний день есть проблемы с мультибайтовыми строками?
akimserg
12.09.2017 05:50+1Спасибо за материал. Есть пожелание — включите, пожалуйста, в подборку информацию по фреймворку phalcon.
artspb
13.09.2017 07:37THT — это то, что раньше называлось OWL. Любопытно, реально ли на нем делать сколько нибудь сложные приложения?
alutskevich
Как всегда, спасибо большое! Из всей подборки я рад тому, что можно Laravel-сертификат получить. Давно уже было анонсировано, наконец-то такая возможность появилась.