PHP 7.4
Вышла в свет новая версия интерпретатора PHP!
https://www.php.net/releases/7_4_0.php
Среди заметных изменений:
• Типизированные свойства
• Стрелочные функции
• Предзагрузка
• FFI
• Распаковка в массивах
• Разделитель для числовых литералов
• Слабые ссылки
• Возможность бросать исключения в __toString()
Быстро посмотреть новые фичи можно в руководстве по миграции https://www.php.net/manual/en/migration74.new-features.php
Полный список изменений: https://github.com/php/php-src/blob/php-7.4.0/UPGRADING
Вышла в свет новая версия интерпретатора PHP!
https://www.php.net/releases/7_4_0.php
Среди заметных изменений:
• Типизированные свойства
• Стрелочные функции
• Предзагрузка
• FFI
• Распаковка в массивах
• Разделитель для числовых литералов
• Слабые ссылки
• Возможность бросать исключения в __toString()
Быстро посмотреть новые фичи можно в руководстве по миграции https://www.php.net/manual/en/migration74.new-features.php
Полный список изменений: https://github.com/php/php-src/blob/php-7.4.0/UPGRADING
Вышел PhpStorm 2019.3
https://habr.com/ru/company/JetBrains/blog/478030/
Вслед за релизом PHP 7.4, вчера выпустили третий мажорный релиз PhpStorm в этом году. Возможно вы уже даже успели обновиться и посмотреть, что нового. Но если нет, то всё самое важное можно глянуть в коротком видеоролике (англ):
https://www.youtube.com/watch?v=h9KGsD87t_M (поправил ссылку)
А подробный разбор прям всех изменений смотрите в хабрапосте.
https://habr.com/ru/company/JetBrains/blog/478030/
Вслед за релизом PHP 7.4, вчера выпустили третий мажорный релиз PhpStorm в этом году. Возможно вы уже даже успели обновиться и посмотреть, что нового. Но если нет, то всё самое важное можно глянуть в коротком видеоролике (англ):
https://www.youtube.com/watch?v=h9KGsD87t_M (поправил ссылку)
А подробный разбор прям всех изменений смотрите в хабрапосте.
Хабр
PhpStorm 2019.3: поддержка PHP 7.4, PSR-12, WSL, MongoDB и многое другое
Всем привет! Мы рады представить вам третий мажорный релиз PhpStorm в этом году! Под катом — подробный разбор всех заметных изменений и новых возможностей. Осторожно — очень много картинок. Скачать...
PHP-Дайджест № 169
PHP 7.4, PhpStorm 2019.3, InfectionPHP и другие релизы, статистика версий PHP, об использовании FFI, видео с прошедших конференций и митапов, порция полезных инструментов, и многое другое.
https://habr.com/ru/post/479306/
PHP 7.4, PhpStorm 2019.3, InfectionPHP и другие релизы, статистика версий PHP, об использовании FFI, видео с прошедших конференций и митапов, порция полезных инструментов, и многое другое.
https://habr.com/ru/post/479306/
Хабр
PHP-Дайджест № 169 (26 ноября – 9 декабря 2019)
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4, PhpStorm 2019.3, InfectionPHP и другие релизы, статистика версий PHP, об использовании FFI, видео с прошедших конференций и...
Как выбрать файлы для предзагрузки в PHP 7.4
https://github.com/DarkGhostHunter/Preloader
Многие ожидали, что поддержку предзагрузки сделают прям в Composer. Но, судя по всему, в ближайшее время это не будет реализовано.
Для Symfony поддержку уже выкатили сами https://symfony.com/blog/new-in-symfony-4-4-preloading-symfony-applications-in-php-7-4
Для Laravel обещают, но из-за использования алиасов пока будут проблемы.
А как быть с произвольным приложением? Можно попробовать загрузить все файлы. Если не нарвётесь на segfault и ряд других нюансов (подробнее https://habr.com/ru/company/badoo/blog/472528/), то это сработает и должно дать прирост. Но эффективнее загружать не все классы, а только самые часто используемые. И вот вопрос как узнать какие это?
Появился вот такой инструмент:
https://github.com/DarkGhostHunter/Preloader
Он предлагает сначала собрать статистику по используемым классам из самого опкэша во время запусков приложения. А потом по этой статистике уже сгенерировать preloader.php скрипт, который подгрузит нужные классы в опкэш. Звучит как годная идея, надо пробовать.
https://github.com/DarkGhostHunter/Preloader
Многие ожидали, что поддержку предзагрузки сделают прям в Composer. Но, судя по всему, в ближайшее время это не будет реализовано.
Для Symfony поддержку уже выкатили сами https://symfony.com/blog/new-in-symfony-4-4-preloading-symfony-applications-in-php-7-4
Для Laravel обещают, но из-за использования алиасов пока будут проблемы.
А как быть с произвольным приложением? Можно попробовать загрузить все файлы. Если не нарвётесь на segfault и ряд других нюансов (подробнее https://habr.com/ru/company/badoo/blog/472528/), то это сработает и должно дать прирост. Но эффективнее загружать не все классы, а только самые часто используемые. И вот вопрос как узнать какие это?
Появился вот такой инструмент:
https://github.com/DarkGhostHunter/Preloader
Он предлагает сначала собрать статистику по используемым классам из самого опкэша во время запусков приложения. А потом по этой статистике уже сгенерировать preloader.php скрипт, который подгрузит нужные классы в опкэш. Звучит как годная идея, надо пробовать.
GitHub
GitHub - DarkGhostHunter/Preloader: Preloader helper to create a PHP-ready preload script from Opcache.
Preloader helper to create a PHP-ready preload script from Opcache. - DarkGhostHunter/Preloader
Если этим субботним утром вы думаете что бы посмотреть, то вот трансляция митапа в Казани https://www.youtube.com/watch?v=zZTv7HMxKXI
В программе аж 6 докладов.
Кстати, в списке мероприятия на декабрь в последнем выпуске дайджеста не было митапа SymСode в Питере. Он пройдёт 18 декабря в офисе JetBrains https://www.meetup.com/ru-RU/symcode/events/267106695/
В программе аж 6 докладов.
Кстати, в списке мероприятия на декабрь в последнем выпуске дайджеста не было митапа SymСode в Питере. Он пройдёт 18 декабря в офисе JetBrains https://www.meetup.com/ru-RU/symcode/events/267106695/
YouTube
Большой казанский PHP-митап
Присоединяйся к чату казанского сообщества https://t.me/beerphp_kazan.
Подробное описание докладов: https://leader-id.ru/event/29485/
Слайды: https://yadi.sk/i/NnwxF_smDZ7tLg
Тайминг и список выступлений 14 декабря 2019 (спасибо Mike Alexeeev):
1. 3:43…
Подробное описание докладов: https://leader-id.ru/event/29485/
Слайды: https://yadi.sk/i/NnwxF_smDZ7tLg
Тайминг и список выступлений 14 декабря 2019 (спасибо Mike Alexeeev):
1. 3:43…
Пока делал видео об обновлении на PHP 7.4 с помощью PhpStorm, Никита обратил моё внимание на то, что сеттеры работают медленнее, чем присвоение свойствам напрямую. Пришлось сделать микробенчмарк. Не верить же Никите на слово?!
https://gist.github.com/pronskiy/492a0590d0fd3cfa0a02a2d7f908c494
⚠️ Бежать и выкидывать сеттеры только из-за перфоманса смысла не имеет в 99% случаев.
https://gist.github.com/pronskiy/492a0590d0fd3cfa0a02a2d7f908c494
Set typed public property: 1.408833026886sЕсли сеттер тривиальный, то с типизированными свойствами в нём мало смысла. Поэтому в видео есть руководство, как сделать квик-фикс для PhpStorm с помощью SSR, чтоб заменять сеттеры на лету там, где необходимо.
Set via setter (no type check): 3.0818917751312s
Set private property via setter: 3.1216759681702s
Set private property via magic: 20.88130402565s
⚠️ Бежать и выкидывать сеттеры только из-за перфоманса смысла не имеет в 99% случаев.
YouTube
How to upgrade to PHP 7.4 with PhpStorm
A few nice tips and tricks on how to update your codebase to PHP 7.4, with some cool bonuses to boot.
https://jetbrains.com/phpstorm/
0:32 Why update? 1. Security
0:50 Why update? 2. Performance.
1:12 Why update? 3. Сleaner code.
1:28 Install PHP 7.4 from…
https://jetbrains.com/phpstorm/
0:32 Why update? 1. Security
0:50 Why update? 2. Performance.
1:12 Why update? 3. Сleaner code.
1:28 Install PHP 7.4 from…
PHP-Дайджест № 170
CakePHP 4, Codeception 4, Phalcon 4 и другие релизы, порция полезных инструментов, подкасты, видео с прошедших митапов, и многое другое!
https://habr.com/p/481564/
CakePHP 4, Codeception 4, Phalcon 4 и другие релизы, порция полезных инструментов, подкасты, видео с прошедших митапов, и многое другое!
https://habr.com/p/481564/
Habr
PHP-Дайджест № 170 (9 – 23 декабря 2019)
Свежая подборка со ссылками на новости и материалы. В выпуске: CakePHP 4, Codeception 4, Phalcon 4 и другие релизы, порция полезных инструментов, подкасты, видео с прошедших митапов, и многое...
PHP-Дайджест № 171
4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое!
https://habr.com/p/483684/
4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое!
https://habr.com/p/483684/
Habr
PHP-Дайджест № 171 (1 – 13 января 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: 4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое....
PHP-Дайджест № 172
PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференций, стримы и многое другое!
https://habr.com/p/485592/
PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференций, стримы и многое другое!
https://habr.com/p/485592/
Habr
PHP-Дайджест № 172 (14 – 27 января 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференций,...
Дженерики в PHP
Последние пару недель Никита Попов работал над исследованием возможности реализации дженериков. Если коротко, то, по словам Никиты, есть несколько серьёзных трудностей и он в целом пока не уверен, что добавить полноценные дженерики в PHP это хорошая идея. Есть PR с прототипом реализации https://github.com/nikic/php-src/pull/3 и все проблемы и открытые вопросы подробно изложены вот тут https://github.com/PHPGenerics/php-generics-rfc/issues/45
Последние пару недель Никита Попов работал над исследованием возможности реализации дженериков. Если коротко, то, по словам Никиты, есть несколько серьёзных трудностей и он в целом пока не уверен, что добавить полноценные дженерики в PHP это хорошая идея. Есть PR с прототипом реализации https://github.com/nikic/php-src/pull/3 и все проблемы и открытые вопросы подробно изложены вот тут https://github.com/PHPGenerics/php-generics-rfc/issues/45
GitHub
Implementation notes · Issue #45 · PHPGenerics/php-generics-rfc
I've done some initial protoyping for (reified) generics in nikic/php-src#3. I want to discuss some implementation aspects here. Some additional reading on relevant issues: On syntax ambiguitie...
PhpStorm 2020.1 EAP
https://blog.jetbrains.com/phpstorm/2020/01/phpstorm-2020-1-early-access-program-is-now-open/
Upd: Поправил ссылку.
Наконец-то запустили программу раннего доступа для первого в этом году мажорного релиза PhpStorm.
Будем улучшать разные подсистемы, в том числе вывод типов в PHP, VCS и прочее. Конечно, производительности будет много внимания.
Описывать все изменения планирую порциями каждую неделю, поэтому подписывайтесь на Twitter phpstorm или старый добрый RSS блога.
В первом посте об улучшениях для Composer – теперь практически всё можно делать прямо в редакторе в файле composer.json. Есть автокомплит, переходы к файлам, запуск скриптов и прочее.
+ PCOV и PHPDBG для подсчёта покрытия, кастомизация тегов Twig, минимально обновили светлую тему, шрифт JetBrains Mono по умолчанию, пачка улучшения для Git, но о них позже.
По традиции EAP билды выходят каждую неделю и их можно использовать совершенно бесплатно.
https://blog.jetbrains.com/phpstorm/2020/01/phpstorm-2020-1-early-access-program-is-now-open/
Upd: Поправил ссылку.
Наконец-то запустили программу раннего доступа для первого в этом году мажорного релиза PhpStorm.
Будем улучшать разные подсистемы, в том числе вывод типов в PHP, VCS и прочее. Конечно, производительности будет много внимания.
Описывать все изменения планирую порциями каждую неделю, поэтому подписывайтесь на Twitter phpstorm или старый добрый RSS блога.
В первом посте об улучшениях для Composer – теперь практически всё можно делать прямо в редакторе в файле composer.json. Есть автокомплит, переходы к файлам, запуск скриптов и прочее.
+ PCOV и PHPDBG для подсчёта покрытия, кастомизация тегов Twig, минимально обновили светлую тему, шрифт JetBrains Mono по умолчанию, пачка улучшения для Git, но о них позже.
По традиции EAP билды выходят каждую неделю и их можно использовать совершенно бесплатно.
PHP-Дайджест № 173
PHPUnit 9 и другие релизы, 3 свежих RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое!
https://habr.com/p/487690/
PHPUnit 9 и другие релизы, 3 свежих RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое!
https://habr.com/p/487690/
Habr
PHP-Дайджест № 173 (27 января – 10 февраля 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: PHPUnit 9 и другие релизы, 3 свежих RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое....
Будущее развитие PHP
https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md
Никита опубликовал черновик RFC с предложением установить механизм введения в язык новых глобальных или ломающих обратную совместимость фич. И рассмотрел возможные пути решения:
1. Новый язык (P++)
При всех своих недостатках, одно из преимуществ тут в том, что можно делать совершенно радикальные изменения. Например, убрать
2. Editions (редакции/издания)
Идея позаимствована из Rust, в разработку которого Никита тоже вовлечён.
По сути, это набор обратно-несовместимых изменений, объединенных под одним именем. Такой вариант интересен как с технической так и с маркетинговой точки зрения.
3. Директивы declare на каждую фичу
То есть на каждое крупное изменение вводить отдельную директиву по типу
___
Поскольку против нового языка уже неофициально проголосовали и единогласно отмели идею, то дальше Никита рассматривает технические аспекты реализации единшов/директив.
Варианты тут такие:
• Текущая реализация с объявлениями в каждом файле
• Новый открывающий тег
Например, для едишнов:
Прототип этого варианта оформлен в виде пул-реквеста.
Пакет надо будет явно объявлять в каждом файле.
Например добавлять файл
В конце Никита подводит выводу, что оптимальный вариант — это едишны + declare директивы в каждом файле.
https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md
Никита опубликовал черновик RFC с предложением установить механизм введения в язык новых глобальных или ломающих обратную совместимость фич. И рассмотрел возможные пути решения:
1. Новый язык (P++)
При всех своих недостатках, одно из преимуществ тут в том, что можно делать совершенно радикальные изменения. Например, убрать
$
из переменных. Но мы помним судьбу Perl/Raku.2. Editions (редакции/издания)
Идея позаимствована из Rust, в разработку которого Никита тоже вовлечён.
По сути, это набор обратно-несовместимых изменений, объединенных под одним именем. Такой вариант интересен как с технической так и с маркетинговой точки зрения.
3. Директивы declare на каждую фичу
То есть на каждое крупное изменение вводить отдельную директиву по типу
strict_types
.___
Поскольку против нового языка уже неофициально проголосовали и единогласно отмели идею, то дальше Никита рассматривает технические аспекты реализации единшов/директив.
Варианты тут такие:
• Текущая реализация с объявлениями в каждом файле
declare(strict_types=1)
или в случае едишнов declare(edition=2020)
• Новый открывающий тег
Например, для едишнов:
<?php2020
• Указание директив для пространств имён (RFC)namespace_declare('Vendor\Lib', [• Ввести понятие пакета в PHP
'strict_types' => 1,
'no_dynamic_properties' => 1,
// ...
]);
Прототип этого варианта оформлен в виде пул-реквеста.
Пакет надо будет явно объявлять в каждом файле.
<?php• Что-то на основе файловой системы
package "nikic/php-parser";
namespace PhpParser\Node;
Например добавлять файл
.package.php
в корне пакета, который будет содержать нужную метаинформацию.В конце Никита подводит выводу, что оптимальный вариант — это едишны + declare директивы в каждом файле.
GitHub
php-rfcs/rfcs/0000-language-evolution.md at language-evolution · nikic/php-rfcs
Experimental repo for GitHub based RFC workflow. For now, please don't submit PRs. - php-rfcs/rfcs/0000-language-evolution.md at language-evolution · nikic/php-rfcs
PHP Russia 2020
#конференции #розыгрыш
https://phprussia.ru/moscow/2020/
Раз у меня есть доступ к конференциям, то почему бы не воспользоваться админресурсом и не делиться этим с вами? Если идея зайдёт, то будем разыгрывать билеты на другие мероприятия чаще. В пуле уже есть PHP fwdays, Laracon Online, PHPKonf, PHP Serbia.
Начнём с конференции в Москве.
Что имеем на данный момент:
• Nicolas Grekas, по сути, главный человек в разработке Symfony сегодня
• Макс Рафалко, автор Infection, о мутационном тестировании из первых рук
• Антон Титов, автор RoadRunner, но на этот раз с докладом о своей Cycle ORM
• Алексей Матюхин из Badoo о реальном опыте применения стат анализа (PHPStan, Psalm, Phan, NoVerify)
Промокод на билеты со скидкой 7%: PHPDIGEST
На конференцию можно попасть бесплатно, если ты докладчик :Roll Safe: 💁🏿♂️
Приём заявок открыт ещё два дня: https://conf.ontico.ru/lectures/propose?conference=pc2020
А вот и розыгрыш билета.
Всё, что нужно сделать, просто нажмите на кнопку, но только если вы сможете приехать в Москву 13 мая на конференцию PHP Russia 2020. (Счётчик обновляется с задержкой)
Если не сможете приехать, пожалуйста, не жмите.
*****
Победители: Andrew Tkachuk
#конференции #розыгрыш
https://phprussia.ru/moscow/2020/
Раз у меня есть доступ к конференциям, то почему бы не воспользоваться админресурсом и не делиться этим с вами? Если идея зайдёт, то будем разыгрывать билеты на другие мероприятия чаще. В пуле уже есть PHP fwdays, Laracon Online, PHPKonf, PHP Serbia.
Начнём с конференции в Москве.
Что имеем на данный момент:
• Nicolas Grekas, по сути, главный человек в разработке Symfony сегодня
• Макс Рафалко, автор Infection, о мутационном тестировании из первых рук
• Антон Титов, автор RoadRunner, но на этот раз с докладом о своей Cycle ORM
• Алексей Матюхин из Badoo о реальном опыте применения стат анализа (PHPStan, Psalm, Phan, NoVerify)
Промокод на билеты со скидкой 7%: PHPDIGEST
На конференцию можно попасть бесплатно, если ты докладчик :Roll Safe: 💁🏿♂️
Приём заявок открыт ещё два дня: https://conf.ontico.ru/lectures/propose?conference=pc2020
А вот и розыгрыш билета.
Всё, что нужно сделать, просто нажмите на кнопку, но только если вы сможете приехать в Москву 13 мая на конференцию PHP Russia 2020. (Счётчик обновляется с задержкой)
Если не сможете приехать, пожалуйста, не жмите.
*****
Победители: Andrew Tkachuk
phprussia.ru
Крупнейшая конференция по PHP в России 2021
PHP-Дайджест № 174
5 новых RFC из PHP Internals, а также предложение по развитию языка и пара прототипов новых фич для PHP в виде пул-реквестов, порция полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/489662/
5 новых RFC из PHP Internals, а также предложение по развитию языка и пара прототипов новых фич для PHP в виде пул-реквестов, порция полезных инструментов, видео, подкасты и многое другое.
https://habr.com/p/489662/
Habr
PHP-Дайджест № 174 (10 – 24 февраля 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: 5 новых RFC из PHP Internals, а также предложение по развитию языка и пара прототипов новых фич в виде пул-реквестов, порция полезных...
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, порция полезных инструментов, видео,...