Свежая подборка со ссылками на новости и материалы. В выпуске: последняя бета PHP 7.3, Laravel Nova, сайт с идеями для следующих версий PHP, новости о Yii 3, порция полезных инструментов, видео, и многое другое. Приятного чтения!
Новости и релизы
- PHP 7.3.0 Beta 3 — Последняя бета в цикле. Следующим релизом станет RC 1, который ожидается 13 сентября.
- Среди изменений:
• Улучшения Heredoc и Nowdoc синтаксиса RFC
• Функции json_encode() и json_decode() будут бросать исключение в случае ошибки и наличия соответствующего флага RFC
• Возможность использовать запятую после последнего аргумента функции RFC
• Новая функция hrtime(), которая возвращает время высокой точности и не зависит от системного времени PR
• Добавлена функция is_countable() для проверки на перечислимость RFC
• Использование ссылок в list() RFC
• Некоторые возможности объявлены устаревшими RFC 1, RFC 2
• В функции работы с куками добавлена поддержка Same Site Cookie RFC
• Значительное улучшение сборщика мусора PR
и другие улучшения. Полный список изменений.
Больше об изменениях можно прочитать в подробном разборе что нового в PHP 7.3 или быстро посмотреть в диффах.
- Среди изменений:
- Удаленное выполнение кода на packagist.org — Уязвимость, позволяющая выполнить код на сервере PHP-репозитория Packagist, передав специально сформированную строку вместо URL в форму добавления нового пакета. Уже исправлена.
- Highload fwdays'18 — 15 сентября в Киеве пройдет масштабная конференция по хайлоаду. Докладов непосредственно о PHP не замечено, но в программе интересные выступления по масштабированию, архитектуре, и оптимизации. Промокод на скидку: PHPDIGEST_HL.
- php-vote.com — Что бы вы хотели видеть в следующей версии PHP? На сайте можно добавить идею или обсудить и проголосовать за уже добавленные.
Инструменты
- nbs-system/snuffleupagus — Расширение безопасности для PHP 7 вдохновленное Suhosin. Предотвращает запуск потенциально небезопасного кода в рантайме.
- adsr/phpspy — Легковесный профайлер для PHP 7.
- adhocore/phint — Инструмент для быстрой генерации скелета приложения по шаблону.
- phpstan/phpstan — Мощный статический анализатор. Посмотреть что нового в v0.10 в докладе автора.
- unreal4u/telegram-api — Асинхронная библиотека на PHP 7 для работы с Telegram bot API.
- nette/utils — Набор полезных функций на каждый день. Пост в поддержку.
Материалы для обучения
Symfony
- Неделя Symfony #609 (27 августа — 2 сентября 2018)
- Неделя Symfony #608 (20-26 августа 2018)
- 9 возможностей Symfony-плагина для PhpStorm в гифках
- Настройка проекта на Symfony для работы с использованием поддоменов в Docker
- Docker для Symfony 4 — от локалки до production
Yii
- Yii development notes #24 —
• К core-команде присоединился новый участник Андрей Васильев
• Yii 3.0 будет использовать контейнер yiisoft/di
• Основным пакетом будет yiisoft/yii-core, доступен список всех пакетов
• Доступен документ с планами core-команды - Совместное использование аутентификации yii1/yii2
- Yii development notes #24 —
Laravel
- Laravel Nova — Тейлор анонсировал платную админ панель для Laravel. Демо можно посмотреть в докладе Тейлора на Laracon, или во вводном посте. Дополнительные пакеты доступны на novapackages.com.
- Знакомство с Laravel Nova ч.1, ч.2
- Беспарольная аутентификация на Laravel с помощью подписанных роутов
- О представлениях (view) в MySQL и использовании их в Laravel Eloquent
- swooletw/laravel-swoole — Позволяет запустить Laravel на асинхронном движке Swoole. Альтернатива hhxsv5/laravel-s.
Async PHP
- ReactPHP Tutorial #11: Использование PSR-15 Middleware — Посмотреть всю серию туториалов по ReactPHP.
- Быстрый веб-скрапинг с помощью ReactPHP: скачиваем все изображения
CMS
- Magento Tech Digest #29: Aug 20 – Aug 27, 2018
- Magento Tech Digest #28: Aug 13 – Aug 20, 2018
- Ранний рендеринг: урок отладки в Drupal 8
- Настройка PhpStorm для работы с Drupal 8
- Рефакторинг легаси PHP кода с примерами
- Делать метод в сущности или нет?
- Об анемичных (без поведения) доменных моделях
- Когда стоит добавить интерфейс в класс
- Об аргументах в виде битовых масок в PHP
- Предложение по безопасной десериализации на PHP
- Как и для чего разработчикам использовать асимметричное шифрование в реальных приложениях
- Запуск PHPUnit-тестов с code coverage в PhpStorm при работе в Docker
Аудио и видеоматериалы
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 137
Комментарии (15)
shm-vadim
03.09.2018 10:58-3Лучше бы обязательность слова function в методах классов убрали.
class MyClass { public function myMethod() { //some code here } }
Ну зачем оно тут нужно? Только удлиняет код.
В ES6 спокойно обходятся и без него.
class MyClass { myMethod() { //some code here } }
mifa
03.09.2018 11:41+10Чтобы код легче читался, так визуально легче воспринимать.
P.S. Всегда было интересно, куда девают столько сэкономленного свободного времени Go-разработчики, которые пишут func вместо function :)alexey-m-ukolov
03.09.2018 11:52С одной стороны, действительно, времени экономится несущественное количество.
А с другой — визуально было бы легче воспринимать, если бы можно было путать свойства класса и методы, но они и так уже визуально легко различаются по отсутствию/наличию доллара и скобок.
Я не считаю, что читаемость пострадает, если function совсем исчезнет. А вот func вместо function — и вправду бред :)
alexey-m-ukolov
03.09.2018 11:55Есть вот такое мнение: laracasts.com/series/php-bits/episodes/1
Я с ним скорее не согласен, но оно, тем не менее, имеет право на существование.
shm-vadim
03.09.2018 12:04М.б. на что-нибудь другое тратят? :)
А в чем тут недостаток читаемости проявится? Сразу ведь понятно, что это метод. В java, если не ошибаюсь, тоже подобный синтаксис. К тому же в свойства в php итак с $ начинаются. Даже по этому принципу никак не спутаешь. А что еще, кроме методов и свойств, может быть внутри класса? :)Andrey_Volk
03.09.2018 12:53Ну и какой смысл изменять лексику языка, если единственная причина для этого — моральное самоудовлетворение php-шников, которым больше зашел JS? Да и приводить JS как пример — нет уж, спасибо, пусть там будет своя помойка, личная.
shm-vadim
03.09.2018 14:03моральное самоудовлетворение
Тут вопрос скорее не в «моральном самоудовлетворении», а в краткости, скорости разработки, удобстве работы с ЯП. Поскольку сейчас, каждый раз создавая action в контроллере / getSetter в сущности я делаю лишнюю никому не нужную работу. На мой взгляд, тем самым только захламляя код.
php-шников, которым больше зашел JS
Вряд ли такие существуют. :) Ну, или они давно уже на ноде сидят. Вот таких знаю.
А в целом, не совсем понял подкол про js. Почему бы не брать у других ЯП. то, что в них хорошо сделано? Анонимные функции взяли ведь. И ничего, вроде бы пока не подавился никто. А ведь это в куда большей степени фишка js.Andrey_Volk
03.09.2018 15:05+2Тут вопрос скорее не в «моральном самоудовлетворении», а в краткости, скорости разработки, удобстве работы с ЯП.
1. Мне удобно работать с ЯП, у которого читаемый синтаксис, а не набор стрелок\скобок\символов.
2. О какой скорости идет речь? Если уж начистоту, 99% времени мы тратим на мышление, а не на написание кода. И, извиняюсь, сколько у вас займет времени написание слова function? У меня где то в районе секунды.
Анонимные функции взяли ведь. И ничего, вроде бы пока не подавился никто. А ведь это в куда большей степени фишка js.
Анонимные функции сперли у JS? Надеюсь вы так шутите.shm-vadim
03.09.2018 15:281. Ну что ж, это, безусловно, дело вкуса. На мой вкус, если данная читаемая строка ничего в коде не значит, то ее вполне можно опустить. Более того, рискну предположить, что если возможность пропуска слова «function» все-таки появится, через пару лет это станет стандартом. Так же, как и [].
2. И у меня, примерно, секунду. Ну, может полторы. Умножаем хотя бы на 40 функций за день — получаем минуту исключительно на написания «function» перед каждым методом. Не сказать, что это самая большая проблема в моей производительности, но я спокойно бы обошелся без этой излишней тренировки моего десятипальцевого английского. Просто потому что это не нужно. И таких секунд/полсекунд в php достаточно. Да хоть тот же $ взять. :) но его-то уж наверняка убрать нельзя.
3. А почему «сперли»? Мне, в принципе, без разницы как именно разработчики php додумались до этой идеи. Но такая концепция и реализация на тот момент уже существовала в js. И php, улучшая свои функциональные возможности, почти полностью ее повторил. Ну, кроме замыканий, разумеется. А что при этом было в голове разработчика, мне кажется несущественно.Corpsee
04.09.2018 06:10+13. В PHP есть замыкания, только внешний контекст нужно передавать явно (Ключевое слово use). С моей точки зрения, это даже лучше, чем тащить весь внешний контекст как в JS.
Анонимные функции и замыкания появились задолго до JS (Смотри Lisp, например) и на данный момент есть практически во всех современных языках программирования, JS здесь вообще не при чем.
FanatPHP
03.09.2018 15:49+1скорости разработки
f<tab>myMethod()
это два нажания клавиши.
Вы счастливый человек, что основное время при разработке у вас занимает написание кода, а не размышления, какой именно код написать. И экономия нажатия двух кнопок значительно повычит скорость разработки.
Gemorroj
03.09.2018 12:30+6Мне наоборот не нравятся эти альтернативные синтаксисы. т.к. по факту это значит что нужно будет пользоваться обеими синтаксисами (в зависимости от проекта). И вся эта js неразбериха не пример для подражания.
alexey-m-ukolov
На редкость бесполезные названия видео в плейлисте…
Standfest
Согласен. А так как там даже нет возможности «войти с соцсетью», а нужно регистировать аккаунт по-старинке, то я просто посмотрел и закрыл сайт навсегда.