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"])>>Сообщество разделилось: некоторые считают, что это может создать проблемы для мейнтейнеров пакетов, потому что просто так поменять имя параметра без поломки обратной совместимости нельзя.
Принят #RFC о приведении чисел с плавающей точкой к строке без учета локали.
https://wiki.php.net/rfc/locale_independent_float_to_string
Сейчас выражение
В PHP 8 в результате принятия предложения приведение чисел с плавающей точкой будет работать одинаково во всех локалях.
@vudaltsov | https://twitter.com/vudaltsov
https://wiki.php.net/rfc/locale_independent_float_to_string
Сейчас выражение
(string) 3.14
возвращает различный результат для, например, английского и русского языков: https://3v4l.org/MaUIT. Это может приводить к неприятным ошибкам в мультиязычных системах (интересные примеры в RFC).В PHP 8 в результате принятия предложения приведение чисел с плавающей точкой будет работать одинаково во всех локалях.
setlocale(LC_ALL, 'ru_RU');Для приведения с учетом локали можно пользоваться функциями семейства
$f = 3.14;
(string) $f; // 3,14 would become 3.14
strval($f); // 3,14 would become 3.14
var_dump($f); // float(3,14) becomes float(3.14)
settype($f, "string"); // 3,14 would become 3.14
implode([$f]); // 3,14 would become 3.14
printf
со спецификатором f: sprintf('%f', 3.14)
.@vudaltsov | https://twitter.com/vudaltsov
PHP Russia Online – Live 🔴
Конференция уже в эфире. Ссылки на трансляции:
С синхронным переводом на русский
https://www.youtube.com/watch?v=zYWDlaOOFTU
Оригинальная на английском
https://www.youtube.com/watch?v=cQZBS3u3SeU
Конференция уже в эфире. Ссылки на трансляции:
С синхронным переводом на русский
https://www.youtube.com/watch?v=zYWDlaOOFTU
Оригинальная на английском
https://www.youtube.com/watch?v=cQZBS3u3SeU
YouTube
PHP Russia 2020 Online по-русски
Приглашаем на конференцию Saint HighLoad++ 2024, которая пройдет 24 и 25 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: https://vk.cc/cuyIqx
--------
--------
Приглашаем на HighLoad++ Foundation — крупнейшую в России профессиональную…
Программа, подробности и билеты по ссылке: https://vk.cc/cuyIqx
--------
--------
Приглашаем на HighLoad++ Foundation — крупнейшую в России профессиональную…
PHP-Дайджест № 180
2 принятых, 2 отклоненных и 6 новых RFC предложений из PHP Internals, обзор PHP 8, порция полезных инструментов, онлайн мероприятия, видео, подкасты и многое другое. #дайджест
https://habr.com/p/502442/
2 принятых, 2 отклоненных и 6 новых RFC предложений из PHP Internals, обзор PHP 8, порция полезных инструментов, онлайн мероприятия, видео, подкасты и многое другое. #дайджест
https://habr.com/p/502442/
Habr
PHP-Дайджест № 180 (4 – 18 мая 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: 2 принятых, 2 отклоненных и 6 новых RFC предложений из PHP Internals, обзор PHP 8, порция полезных инструментов, онлайн мероприятия,...
Принят RFC, который добавит тип mixed в PHP 8
Есть два основных аргумента в его пользу:
- mixed сигнализирует о том, что тип не забыли указать, просто он не может быть уточнён,
- mixed часто фигурирует в документации PHP.
Смешанный тип эквивалентен объединению типов
О других нюансах использования смешанного типа читайте в RFC: https://wiki.php.net/rfc/mixed_type_v2.
@vudaltsov | https://twitter.com/vudaltsov
Есть два основных аргумента в его пользу:
- mixed сигнализирует о том, что тип не забыли указать, просто он не может быть уточнён,
- mixed часто фигурирует в документации PHP.
Смешанный тип эквивалентен объединению типов
null|bool|int|float|string|array|object|callable|resource
. При наследовании mixed по общему правилу может использоваться в следующих ситуациях:abstract class AТип
{
abstract public function bar(string $arg): mixed;
}
final class B extends A
{
/**
* тип аргумента расширен в подклассе
* тип возвращаемого значения сужен в подклассе
*/
public function bar(mixed $arg): int
{...}
}
?mixed
считается невалидным и избыточным: mixed
по определению включает null
. Код с таким типом сгенерирует фатальную ошибку.О других нюансах использования смешанного типа читайте в RFC: https://wiki.php.net/rfc/mixed_type_v2.
@vudaltsov | https://twitter.com/vudaltsov
На ближайших выходных сразу два крутых PHP-мероприятия. Ребята уже скоординировались и больше таких коллизий не будет. Ну а в этот раз можно насладиться выбором.
Про 3-й виртуальный PHP-митап вы наверняка уже слышали. Но если вдруг нет, то в субботу, 30 мая, будет 5 докладов, включая историю от того самого слепого разработчика, и зум с крутыми гостями.
Кроме того, 30 и 31 мая будет проходить PHP fwdays online. Программа вот тут https://fwdays.com/en/event/php-fwdays-2020#program-event.
Сам жду доклад Макса Рафалко (Infection) о принципах проектирования пакетов. Уж очень понравился его документ о выделении пакета из Infection https://github.com/infection/infection/issues/922.
Организаторы PHP fwdays предоставили пару билетов для розыгрыша — он в следующем сообщении.
Про 3-й виртуальный PHP-митап вы наверняка уже слышали. Но если вдруг нет, то в субботу, 30 мая, будет 5 докладов, включая историю от того самого слепого разработчика, и зум с крутыми гостями.
Кроме того, 30 и 31 мая будет проходить PHP fwdays online. Программа вот тут https://fwdays.com/en/event/php-fwdays-2020#program-event.
Сам жду доклад Макса Рафалко (Infection) о принципах проектирования пакетов. Уж очень понравился его документ о выделении пакета из Infection https://github.com/infection/infection/issues/922.
Организаторы PHP fwdays предоставили пару билетов для розыгрыша — он в следующем сообщении.
PHP fwdays Online — 30 и 31 мая
https://fwdays.com/en/event/php-fwdays-2020
Промокод на скидку 15%: PHPDIGEST2020
Разыгрываем 2 билета, победителей определяет бот @VoterBiBot сегодня, 27 мая, в 20:00.
(Счетчик кнопки обновляется с задержкой)
*****
Победители: Sergii Gzh, Maksim Aleshchenko
https://fwdays.com/en/event/php-fwdays-2020
Промокод на скидку 15%: PHPDIGEST2020
Разыгрываем 2 билета, победителей определяет бот @VoterBiBot сегодня, 27 мая, в 20:00.
(Счетчик кнопки обновляется с задержкой)
*****
Победители: Sergii Gzh, Maksim Aleshchenko
Fwdays
PHP fwdays'20- the largest PHP conference in Ukraine
Fwdays - large-scale tech conferences, meetups and workshops for developers on JavaScript, Frontend, PHP, .NET, Highload, PM in Ukraine
Стартовал PhpStorm 2020.2 EAP
В этом релизе будем улучшать подсистемы, фиксить старые баги, готовиться к PHP 8 и не обойдется без новых фич.
В первом билде можно пощупать полную поддержку пул-реквестов GitHub — теперь все действия доступны прямо в IDE. Можно ревьювить, комментировать, мерджить.
Добавили виджет инспекций — он позволяет быстро сконфигурировать, какие ошибки показывать, и пробежаться по всем ошибкам.
И также сильно переработали анализ потока выполнения PHP. Это позволяет добавить новые инспекции и дает возможность исправить много старых багов.
Как и всегда, EAP-версию можно использовать бесплатно.
https://blog.jetbrains.com/phpstorm/2020/05/phpstorm-2020-2-early-access-program-is-now-open/
В этом релизе будем улучшать подсистемы, фиксить старые баги, готовиться к PHP 8 и не обойдется без новых фич.
В первом билде можно пощупать полную поддержку пул-реквестов GitHub — теперь все действия доступны прямо в IDE. Можно ревьювить, комментировать, мерджить.
Добавили виджет инспекций — он позволяет быстро сконфигурировать, какие ошибки показывать, и пробежаться по всем ошибкам.
И также сильно переработали анализ потока выполнения PHP. Это позволяет добавить новые инспекции и дает возможность исправить много старых багов.
Как и всегда, EAP-версию можно использовать бесплатно.
https://blog.jetbrains.com/phpstorm/2020/05/phpstorm-2020-2-early-access-program-is-now-open/
PHP-Дайджест № 181
3 новых и 4 принятых RFC предложения для PHP 8, включая объявление свойств в конструкторе, о блокировке PHP-ML из-за плагиата, почему разработчики ненавидят PHP, порция полезных инструментов и многое другое. #дайджест
https://habr.com/p/504734/
3 новых и 4 принятых RFC предложения для PHP 8, включая объявление свойств в конструкторе, о блокировке PHP-ML из-за плагиата, почему разработчики ненавидят PHP, порция полезных инструментов и многое другое. #дайджест
https://habr.com/p/504734/
Habr
PHP-Дайджест № 181 (18 мая – 1 июня 2020)
Фото Erika Heidi Свежая подборка со ссылками на новости и материалы. В выпуске: 3 новых и 4 принятых RFC предложения для PHP 8, включая объявление свойств в конструкторе, о блокировке PHP-ML из-за...
Голосования по RFC
Сейчас на стадии голосования находятся три предложения:
• Проверка корректности сигнатур магических методов;
• Оптимизации без кеширования опкодов;
• Использование зарезервированного неймспейса
Голосовать могут, как всегда, только контрибьюторы. Кстати, чтоб получить право голоса, можно контрибьютить в документацию и тесты — для них знания C не требуется.
Тем временем Bejamin Eberlei (автор атрибутов) сделал на сайте https://php-rfc-watch.beberlei.de/ голосование для комьюнити. Силы никакой оно не имеет, но все равно интересно.
Сейчас на стадии голосования находятся три предложения:
• Проверка корректности сигнатур магических методов;
• Оптимизации без кеширования опкодов;
• Использование зарезервированного неймспейса
\PHP
в ядре.Голосовать могут, как всегда, только контрибьюторы. Кстати, чтоб получить право голоса, можно контрибьютить в документацию и тесты — для них знания C не требуется.
Тем временем Bejamin Eberlei (автор атрибутов) сделал на сайте https://php-rfc-watch.beberlei.de/ голосование для комьюнити. Силы никакой оно не имеет, но все равно интересно.
Разыгрываем билеты на PHP fwdays'20 | Special edition, которая пройдет онлайн 6 июня
https://fwdays.com/en/event/php-fwdays-special-edition
Вторая часть конференции со звездным составом: Jordi Boggiano (Composer), Sebastian Bergmann (PHPUnit), Nikita Popov (PHP Core), Marco Pivetta (aka Ocramius) и другие.
Код на скидку 15%: PHPDIGEST20.
Разыгрываем 2 билета, победителей определяет @VoterBiBot сегодня, 4 июня, в 20:00.
(Счетчик кнопки обновляется с задержкой)
*****
Победители: Игорь Драндин, Cactus
https://fwdays.com/en/event/php-fwdays-special-edition
Вторая часть конференции со звездным составом: Jordi Boggiano (Composer), Sebastian Bergmann (PHPUnit), Nikita Popov (PHP Core), Marco Pivetta (aka Ocramius) и другие.
Код на скидку 15%: PHPDIGEST20.
Разыгрываем 2 билета, победителей определяет @VoterBiBot сегодня, 4 июня, в 20:00.
(Счетчик кнопки обновляется с задержкой)
*****
Победители: Игорь Драндин, Cactus
Fwdays
PHP fwdays'20 | Special edition
Fwdays - large-scale tech conferences, meetups and workshops for developers on JavaScript, Frontend, PHP, .NET, Highload, PM in Ukraine