Laracon Online
#конференции #розыгрыш
https://laracon.net/
Конференция проходит в виде онлайн-трансляции, так что присоединиться можно из любого места и ехать никуда не нужно и можно смотреть компанией.
Начало завтра в 9:00 UTC-5 (первый доклад в 10:00). Тейлор расскажет про Laravel 7, а вся программа тут https://laracon.net/#time-table
Разыгрываем 5 билетов.
*
Победители: Aliaksandr Burshtyn, Roman, Dzianis Yurevich, Ilia Lazarev, Alexey Shapilov
#конференции #розыгрыш
https://laracon.net/
Конференция проходит в виде онлайн-трансляции, так что присоединиться можно из любого места и ехать никуда не нужно и можно смотреть компанией.
Начало завтра в 9:00 UTC-5 (первый доклад в 10:00). Тейлор расскажет про Laravel 7, а вся программа тут https://laracon.net/#time-table
Разыгрываем 5 билетов.
*
Победители: Aliaksandr Burshtyn, Roman, Dzianis Yurevich, Ilia Lazarev, Alexey Shapilov
Laracon Online | FREE on YouTube on September 14th
Laracon Online is the digital gathering of people who are passionate about building amazing applications with the Laravel web framework.
Плагин для PhpStorm
https://habr.com/ru/company/badoo/blog/490024/
В статье от Badoo подробно о том, как писать свой плагин с подробным разбором реализации кастомной инспекции, а также демо других фишек, которые можно сделать: работа с БД, кодогенерация, добавление статистики от профайлера прямо в код и прочее.
И в дополнение несколько полезных плагинов, может какие-то из них вы ещё не пробовали.
• Php Inspections (EA Extended) — очень много дополнительных инспекций (архитектура, качество, безопасность, и др).
• deep-assoc-completion — дополнение кода для ассоциативных массивов.
• Key Promoter X — поможет выучить горячие клавиши. Или хотя бы Alt+Enter вместо клика на лампочку.
• 3v4l pl4g1n — быстро запустить выделенный код на 3v4l.org, чтоб сравнить на всех версиях PHP.
• String Manipulation — дополнительные действия над строками.
• CodeGlance — мини-карта а-ля sublime.
• Rainbow Brackets — раскрашивает скобки разными цветами, чтоб быстро находить глазами.
#PhpStorm
https://habr.com/ru/company/badoo/blog/490024/
В статье от Badoo подробно о том, как писать свой плагин с подробным разбором реализации кастомной инспекции, а также демо других фишек, которые можно сделать: работа с БД, кодогенерация, добавление статистики от профайлера прямо в код и прочее.
И в дополнение несколько полезных плагинов, может какие-то из них вы ещё не пробовали.
• Php Inspections (EA Extended) — очень много дополнительных инспекций (архитектура, качество, безопасность, и др).
• deep-assoc-completion — дополнение кода для ассоциативных массивов.
• Key Promoter X — поможет выучить горячие клавиши. Или хотя бы Alt+Enter вместо клика на лампочку.
• 3v4l pl4g1n — быстро запустить выделенный код на 3v4l.org, чтоб сравнить на всех версиях PHP.
• String Manipulation — дополнительные действия над строками.
• CodeGlance — мини-карта а-ля sublime.
• Rainbow Brackets — раскрашивает скобки разными цветами, чтоб быстро находить глазами.
#PhpStorm
Хабр
Избавляемся от рутины со своим плагином для PhpStorm
Привет, Хабр! Я тружусь в команде Антиспама, и, как и у большинства бэкенд-разработчиков Badoo, большая часть времени у меня уходит на работу с PHP-кодом. С эт...
Stringable Interface
https://wiki.php.net/rfc/stringable
Предложение от Nicolas Grekas принято. В PHP 8 можно будет использовать union-тип
Интересно, что при этом если в классе реализован магический метод
https://wiki.php.net/rfc/stringable
Предложение от Nicolas Grekas принято. В PHP 8 можно будет использовать union-тип
string|Stringable
там, где ожидается строка, и передавать классы с __toString()
.Интересно, что при этом если в классе реализован магический метод
__toString()
, то добавлять implements Stringable
можно, но необязательно, потому что он неявно будет имплементирован автоматически, прям как в Golang.PHP-Дайджест № 175
Релизы Laravel 7 и CodeIgniter 4, атрибуты v2 и другие RFC-предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/491660/
Релизы Laravel 7 и CodeIgniter 4, атрибуты v2 и другие RFC-предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/491660/
Habr
PHP-Дайджест № 175 (25 февраля – 10 марта 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: релизы Laravel 7 и CodeIgniter 4, атрибуты v2 и другие RFC-предложения из PHP Internals, порция полезных инструментов, видео, подкасты...
str_contains() в PHP 8
https://wiki.php.net/rfc/str_contains
Не прошло и 25 лет и вот в PHP добавили функцию, которая проверяет, содержится ли строка в другой строке.
В качестве альтернатив для работы со строками уже есть symfony/string или, например, voku/Stringy.
https://wiki.php.net/rfc/str_contains
Не прошло и 25 лет и вот в PHP добавили функцию, которая проверяет, содержится ли строка в другой строке.
str_contains(string $haystack, string $needle) :boolКонечно, это всего лишь эквивалент
str_contains("abc", "a"); // true
str_contains("abc", "d"); // false
strpos($haystack, $needle) !== false
но приятная мелочь. В качестве альтернатив для работы со строками уже есть symfony/string или, например, voku/Stringy.
PHP-Дайджест № 176
Обновления PHP и Composer 1.10, переносы конференций, 3 новых RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/493594/
Обновления PHP и Composer 1.10, переносы конференций, 3 новых RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/493594/
Habr
PHP-Дайджест № 176 (11 – 23 марта 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP и Composer 1.10, переносы конференций, 3 новых RFC предложения из PHP Internals, порция полезных инструментов, видео,...
Forwarded from Deleted Account
Всем привет! В эту субботу планируется виртуальный PHP-митап, в котором поучаствуют ребята из ПК конференции + можно будет получить билет на ее онлайновую и оффлайновую части. И не только)
▶️ 6 докладов с трансляцией на Youtube - опыт Skyeng, ManyСhat, iSpring, SimbirSoft, а также небольших студий и независимых разработчиков
🎛 Обсуждения голосом со спикерами - в отдельной видеокомнате после каждого доклада
🍕 Пицца с доставкой на дом за вопросы после каждого доклада
🏆 PHP-викторина с Романом Пронским, необычный розыгрыш билета на PHP Russia, пхпбот и другие интерактивы в перерывах.
И все это не выходя из телефона или 💻 ноутбука) Присоединяйся: https://meetups-online.ru/virtual_php_meetup
p.s. Спасибо @samdark и @pronskiy
за поддержку идеи!
▶️ 6 докладов с трансляцией на Youtube - опыт Skyeng, ManyСhat, iSpring, SimbirSoft, а также небольших студий и независимых разработчиков
🎛 Обсуждения голосом со спикерами - в отдельной видеокомнате после каждого доклада
🍕 Пицца с доставкой на дом за вопросы после каждого доклада
🏆 PHP-викторина с Романом Пронским, необычный розыгрыш билета на PHP Russia, пхпбот и другие интерактивы в перерывах.
И все это не выходя из телефона или 💻 ноутбука) Присоединяйся: https://meetups-online.ru/virtual_php_meetup
p.s. Спасибо @samdark и @pronskiy
за поддержку идеи!
Вышла новая мажорная версия популярной библиотеки ramsey/uuid. Из описания следует, что серьезных нарушений обратной совместимости в ней нет, а вот новых интерфейсов и исключений там целый список.
Изучаем изменения в документации и обновляемся
На мой взгляд, самое интересное — это поддержка пока нестандартизированного UUID v6. Новая версия UUID предложена специально для использования в качестве первичного ключа БД и обладает следующими свойствами:
- Сортировка по необработанным байтам приводит к последовательности, эквивалентной сортировке по встроенной временной метке.
- Встроенное время может быть извлечено для использования в качестве времени создания.
- Глобальная уникальность, которая является основным требованием для всех типов UUID.
Про отличия версии 6 от версии 1 и другие подробности можно прочитать в IETF черновике.
@vudaltsov | https://twitter.com/vudaltsov
________
Карантин имеет свои плюсы. Созвонились с Валентином Удальцовым и решили объединить усилия. Теперь на канале будут иногда появляться новости от Валентина, они будут подписаны как этот пост выше.
Кстати, Валентин ведёт свой канал Пых, где пишет о личном опыте разработки на PHP.
Изучаем изменения в документации и обновляемся
composer req ramsey/uuid:^4.0
.На мой взгляд, самое интересное — это поддержка пока нестандартизированного UUID v6. Новая версия UUID предложена специально для использования в качестве первичного ключа БД и обладает следующими свойствами:
- Сортировка по необработанным байтам приводит к последовательности, эквивалентной сортировке по встроенной временной метке.
- Встроенное время может быть извлечено для использования в качестве времени создания.
- Глобальная уникальность, которая является основным требованием для всех типов UUID.
Про отличия версии 6 от версии 1 и другие подробности можно прочитать в IETF черновике.
@vudaltsov | https://twitter.com/vudaltsov
________
Карантин имеет свои плюсы. Созвонились с Валентином Удальцовым и решили объединить усилия. Теперь на канале будут иногда появляться новости от Валентина, они будут подписаны как этот пост выше.
Кстати, Валентин ведёт свой канал Пых, где пишет о личном опыте разработки на PHP.
GitHub
Release 4.0.0 · ramsey/uuid
Read the upgrade guide for details on how these changes may impact your code and what you can do to ease the upgrade process.
Added
Add support for version 6 UUIDs, as defined by http://gh.peabod...
Added
Add support for version 6 UUIDs, as defined by http://gh.peabod...
Единогласно принято предложение Никиты Попова о валидации абстрактных методов трейтов.
Фатальная ошибка будет сгенерирована в следующих случаях:
- нарушение совместимости сигнатур (кол-во аргументов, контравариантность аргументов, ковариантность возвращаемого типа),
- несовпадение статичности методов.
Также данный RFC разрешает использовать
Будьте внимательны, RFC, очевидно, нарушает обратную совместимость. Однако соблюдать сигнатуру при имплементации абстрактного метода вполне логично, поэтому скорее всего ваш код уже совместим с PHP 8 в этом аспекте.
@vudaltsov | https://twitter.com/vudaltsov
Фатальная ошибка будет сгенерирована в следующих случаях:
- нарушение совместимости сигнатур (кол-во аргументов, контравариантность аргументов, ковариантность возвращаемого типа),
- несовпадение статичности методов.
Также данный RFC разрешает использовать
abstract private function
, но только в трейтах, так как трейт имеет доступ к приватным методам использующего его класса. В PHP 7 такой код генерирует фатальную ошибку.Будьте внимательны, RFC, очевидно, нарушает обратную совместимость. Однако соблюдать сигнатуру при имплементации абстрактного метода вполне логично, поэтому скорее всего ваш код уже совместим с PHP 8 в этом аспекте.
@vudaltsov | https://twitter.com/vudaltsov
3v4l.org
Online PHP editor | output for rql2S
Run your php code online; get statistics, vld output and compare output from all versions.
Также единогласно принято предложение об объектной альтернативе для token_get_all().
В PHP 8 вместо
Кроме того, класс
@vudaltsov | https://twitter.com/vudaltsov
В PHP 8 вместо
foreach (token_get_all($code) as $token) {можно будет писать
if (is_string($token)) {
// одиночный символ, например, ;
continue;
}
[$pos, $text, $line] = $token;
}
foreach (PhpToken::getAll($code) as $token) {При прочих равных второй вариант потребует меньше памяти и времени. Это значит, что различные парсеры, например,
$token->id;
$token->text;
$token->line;
$token->pos;
$token->is([T_CLASS, T_CONST]);
}
nikic/php-parser
, doctrine/annotations
или twig/twig
в будущем будут работать немного быстрее 😊Кроме того, класс
PhpToken
легко расширяется, статический метод getAll()
предусмотрительно возвращает static[]
.@vudaltsov | https://twitter.com/vudaltsov
SymfonyLive Online – сегодня, в 16:00 UTC, Fabien Potencier и Nicolas Grekas в прямом эфире покажут, как проходит опенсорс-работа над Symfony: просмотр и мердж пул-реквестов, ответы на комментарии, участие в дискуссиях вокруг RFC, выпуск релиза Symfony 5.0.6.
А уже завтра состоится большой онлайн PHP-митап.
А уже завтра состоится большой онлайн PHP-митап.
Ни дня без RFC от Никиты!
https://wiki.php.net/rfc/constructor_promotion
Предлагается добавить синтаксический сахар, который позволит объявлять свойства класса прямо в конструкторе. Так же как и в TypeScript.
Напомним, оставлять запятую в вызове можно начиная с PHP 7.3.
@vudaltsov | https://twitter.com/vudaltsov
https://wiki.php.net/rfc/constructor_promotion
Предлагается добавить синтаксический сахар, который позволит объявлять свойства класса прямо в конструкторе. Так же как и в TypeScript.
class Point {Остается открытым вопрос: стоит ли разрешить оставлять запятую после последнего параметра в сигнатуре функции?
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0
) {}
}
Напомним, оставлять запятую в вызове можно начиная с PHP 7.3.
@vudaltsov | https://twitter.com/vudaltsov
Enum в PHP
Тип Enum – одна из самых желанных возможностей в PHP. Есть имитации типа clabs/php-enum, spatie/enum или dbalabka/php-enumeration. Черновику RFC https://wiki.php.net/rfc/enum уже пять лет и есть реализация в Hack. И тем не менее, над тем, чтобы добавить наконец-то фичу в PHP всё ещё никто не работает.
В JetBrains, в рамках традиционной программы летней стажировки, есть две вакансии в команде PhpStorm.
Одна по Автоматизация тестирования рефакторингов для PhpStorm, а вот вторая — First-class enum support in PHP предполагает работу непосредственно под руководством Никиты Попова над реализацией Enum в PHP!
Если у вас есть знакомые студенты (Москва/Питер), которым может быть интересно — поделитесь с ними, пожалуйста, ссылкой (подача заявок до понедельника).
Даешь Enum в PHP!
Тип Enum – одна из самых желанных возможностей в PHP. Есть имитации типа clabs/php-enum, spatie/enum или dbalabka/php-enumeration. Черновику RFC https://wiki.php.net/rfc/enum уже пять лет и есть реализация в Hack. И тем не менее, над тем, чтобы добавить наконец-то фичу в PHP всё ещё никто не работает.
В JetBrains, в рамках традиционной программы летней стажировки, есть две вакансии в команде PhpStorm.
Одна по Автоматизация тестирования рефакторингов для PhpStorm, а вот вторая — First-class enum support in PHP предполагает работу непосредственно под руководством Никиты Попова над реализацией Enum в PHP!
Если у вас есть знакомые студенты (Москва/Питер), которым может быть интересно — поделитесь с ними, пожалуйста, ссылкой (подача заявок до понедельника).
Даешь Enum в PHP!
PHP-Дайджест № 177
Расписание релиза PHP 8, анализ эргономики объектов в PHP и 5 свежих RFC из PHP Internals, немного полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/495838/
Расписание релиза PHP 8, анализ эргономики объектов в PHP и 5 свежих RFC из PHP Internals, немного полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/495838/
Habr
PHP-Дайджест № 177 (23 марта – 6 апреля 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: расписание релиза PHP 8, анализ эргономики объектов в PHP и 5 свежих RFC из PHP Internals, немного полезных инструментов, видео,...
Composer v2.0-dev
5 апреля исполнилось ровно 9 лет первому коммиту в репозиторий Composer. Готовящийся второй мажорный релиз можно попробовать уже сейчас.
Обзор всех новых фишек можно найти в этой статье https://php.watch/articles/composer-2
А чтобы попробовать Composer v2 прямо сейчас, достаточно выполнить вот такую команду:
Благодаря параллельному скачиванию метаданных и файлов пакетов установка без кэша выполняется в два раза быстрее.
Если в системе есть curl, то несколько пакетов/API-вызовов будут загружены одновременно. Кроме того, Composer v2 будет использовать HTTP/2 и переиспользовать TLS-сессии, а также DNS-ответы между HTTP-запросами для ускорения.
Офлайн-режим
Можно будет предотвратить попытки Composer v2 делать любые сетевые запросы. Полезно при запуске тестов или если есть проблемы с соединением. Если имеется composer.lock и пакеты c метаданными доступны в кэше, то Composer v2 сделает всё без дополнительных запросов.
Конечно, для полноценного офлайна нужен satis или private packagist.
Поддержка dry-run для require и remove
Опция --dry-run сейчас доступна только для composer update и позволяет не делать никаких реальных изменений, а просто посмотреть в терминале, что будет в итоге.
Теперь эту опцию можно будет использовать и для других команд, чтобы проверить установку/изменение пакетов без изменения файлов.
5 апреля исполнилось ровно 9 лет первому коммиту в репозиторий Composer. Готовящийся второй мажорный релиз можно попробовать уже сейчас.
Обзор всех новых фишек можно найти в этой статье https://php.watch/articles/composer-2
А чтобы попробовать Composer v2 прямо сейчас, достаточно выполнить вот такую команду:
composer self-update --snapshot
Улучшена производительность Благодаря параллельному скачиванию метаданных и файлов пакетов установка без кэша выполняется в два раза быстрее.
Если в системе есть curl, то несколько пакетов/API-вызовов будут загружены одновременно. Кроме того, Composer v2 будет использовать HTTP/2 и переиспользовать TLS-сессии, а также DNS-ответы между HTTP-запросами для ускорения.
Офлайн-режим
Можно будет предотвратить попытки Composer v2 делать любые сетевые запросы. Полезно при запуске тестов или если есть проблемы с соединением. Если имеется composer.lock и пакеты c метаданными доступны в кэше, то Composer v2 сделает всё без дополнительных запросов.
Конечно, для полноценного офлайна нужен satis или private packagist.
Поддержка dry-run для require и remove
Опция --dry-run сейчас доступна только для composer update и позволяет не делать никаких реальных изменений, а просто посмотреть в терминале, что будет в итоге.
Теперь эту опцию можно будет использовать и для других команд, чтобы проверить установку/изменение пакетов без изменения файлов.
PHP.Watch
Composer 2: What's new and changed
PHP's dependency manager, composer has its new major version 2 coming soon! Here is what is new and changing.
PhpStorm 2020.1
Первое мажорное обновление в этом году зарелизили из дома. Под капотом поддержка composer.json, покрытие кода с PCOV и PHPDBG, улучшения для метаданных и вывода типов в PHP, инструменты для PHPUnit, проверка правописания и грамматики и много другого.
Возможно, вы уже успели обновиться и посмотреть, что нового. Но если нет, то вот подробный разбор всех изменений на русском:
https://habr.com/ru/company/JetBrains/blog/497358/
Первое мажорное обновление в этом году зарелизили из дома. Под капотом поддержка composer.json, покрытие кода с PCOV и PHPDBG, улучшения для метаданных и вывода типов в PHP, инструменты для PHPUnit, проверка правописания и грамматики и много другого.
Возможно, вы уже успели обновиться и посмотреть, что нового. Но если нет, то вот подробный разбор всех изменений на русском:
https://habr.com/ru/company/JetBrains/blog/497358/
Хабр
PhpStorm 2020.1: поддержка composer.json, инструменты для PHPUnit, покрытие кода с PCOV и PHPDBG, Grazie и другое
Привет, Хабр! Рады представить первый мажорный релиз PhpStorm в этом году! Под катом подробный разбор всех заметных изменений и новых возможностей. Осторожно...
PHP-Дайджест № 178
Composer 2.0 Alpha и другие релизы, 5 новых и одно принятое RFC предложение из PHP Internals, а также обновленные атрибуты на голосовании, порция полезных инструментов, подкасты, интервью, статьи.
https://habr.com/p/498246/
#дайджест
Composer 2.0 Alpha и другие релизы, 5 новых и одно принятое RFC предложение из PHP Internals, а также обновленные атрибуты на голосовании, порция полезных инструментов, подкасты, интервью, статьи.
https://habr.com/p/498246/
#дайджест
Habr
PHP-Дайджест № 178 (6 – 21 апреля 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: Composer 2.0 Alpha и другие релизы, 5 новых и одно принятое RFC предложение из PHP Internals, а также обновленные атрибуты на...
У PHP крутое сообщество. Особенно круто видеть, как разные группы и компании объединяются, чтоб сделать что-то классное вместе.
Во-первых, PHP Russia Online будет бесплатной благодаря Badoo. Если еще не зарегистрировались, то это можно сделать вот тут https://conf.ontico.ru/polls/2901184/onepage.
Доклады на офлайн-конференции не будут пересекаться с онлайн-версией, поэтому подключиться к онлайну можно независимо от того собираетесь на офлайн или нет.
Во-вторых, в субботу в 11:50 UTC+3 начнется онлайн PHP-митап организованный совместно Skyeng и минским сообществом PHPofBy. Ссылка на трансляцию https://www.youtube.com/watch?v=se3F83O0ZiY.
На нем, как и в прошлый раз, я проведу викторину с вопросами по PHP от Пети Мязина из Пятиминутки PHP, Skyeng, и парочкой от меня лично.
Во-первых, PHP Russia Online будет бесплатной благодаря Badoo. Если еще не зарегистрировались, то это можно сделать вот тут https://conf.ontico.ru/polls/2901184/onepage.
Доклады на офлайн-конференции не будут пересекаться с онлайн-версией, поэтому подключиться к онлайну можно независимо от того собираетесь на офлайн или нет.
Во-вторых, в субботу в 11:50 UTC+3 начнется онлайн PHP-митап организованный совместно Skyeng и минским сообществом PHPofBy. Ссылка на трансляцию https://www.youtube.com/watch?v=se3F83O0ZiY.
На нем, как и в прошлый раз, я проведу викторину с вопросами по PHP от Пети Мязина из Пятиминутки PHP, Skyeng, и парочкой от меня лично.
На прошедшем онлайн PHP-митапе в викторине было два каверзных вопроса, на которые многие ответили неправильно.
Можно ли назвать метод "function"?
Но PHP был бы не PHP, если б в нем не было забавного бага: если метод в трейте называется '
И второй вопрос.
Что выведет var_dump(0.1 + 0.2 === 0.3) ?
Ответ:
Именно поэтому хранить денежные значения в базе данных в поле типа float/double очень плохая идея. (Не только в базе, а вообще использовать для денежных значений float).
Можно ли назвать метод "function"?
class PhpQuizДа, можно. Более того, благодаря вот этому RFC Context Sensitive Lexer, начиная с PHP 7.0 методы и константы класса можно называть ключевыми словами.
{
public function function() { }
}
Но PHP был бы не PHP, если б в нем не было забавного бага: если метод в трейте называется '
namespace
', то для него не получится использовать алиас.И второй вопрос.
Что выведет var_dump(0.1 + 0.2 === 0.3) ?
Ответ:
bool(false)
И это не особенность PHP, в чем можно убедиться проверив аналогичный пример в любом другом языке программирования. Подробнее вот здесь http://0.30000000000000004.com/Именно поэтому хранить денежные значения в базе данных в поле типа float/double очень плохая идея. (Не только в базе, а вообще использовать для денежных значений float).
PHP-Дайджест № 179
4 принятых RFC предложения для PHP 8, включая атрибуты (аннотации / декораторы) — голосование по ним заканчивается сегодня в 12 UTC, но результат уже понятен.
Также, как всегда, порция полезных инструментов, онлайн-конференции и митапы, видео, подкасты и многое другое. #дайджест
https://habr.com/p/500314/
4 принятых RFC предложения для PHP 8, включая атрибуты (аннотации / декораторы) — голосование по ним заканчивается сегодня в 12 UTC, но результат уже понятен.
Также, как всегда, порция полезных инструментов, онлайн-конференции и митапы, видео, подкасты и многое другое. #дайджест
https://habr.com/p/500314/
Habr
PHP-Дайджест № 179 (21 апреля – 4 мая 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: 4 принятых RFC предложения для PHP 8, включая атрибуты (аннотации / декораторы), порция полезных инструментов, онлайн-конференции и...
#RFC Именованные аргументы функций
https://wiki.php.net/rfc/named_params
Никита идет по списку, предложенному Ларри Гарфильдом, и выдвигает на обсуждение обновленный и проработанный документ.
Именованные аргументы позволяют передавать аргументы в функцию на основе имени параметра, а не его позиции. Причем можно комбинировать именованные и позиционные.
Пропуск дефолтных значений:
https://wiki.php.net/rfc/named_params
Никита идет по списку, предложенному Ларри Гарфильдом, и выдвигает на обсуждение обновленный и проработанный документ.
Именованные аргументы позволяют передавать аргументы в функцию на основе имени параметра, а не его позиции. Причем можно комбинировать именованные и позиционные.
Пропуск дефолтных значений:
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401 , ini_get("default_charset"), false);станет:
htmlspecialchars($string, double_encode: false);Еще это важно для атрибутов, так как сейчас с ними вот такой PHPDoc:
/**выглядел бы вот так:
* @Route("/api/posts/{id}", methods={"GET","HEAD"})
*/
<<Route("/api/posts/{id}", ["methods" => ["GET", "HEAD"]])>>А с этим RFC будет красиво:
<<Route("/api/posts/{id}", methods: ["GET", "HEAD"])>>Сообщество разделилось: некоторые считают, что это может создать проблемы для мейнтейнеров пакетов, потому что просто так поменять имя параметра без поломки обратной совместимости нельзя.