Size: a a a

2019 November 29
PHP Digest
Вышел PhpStorm 2019.3

https://habr.com/ru/company/JetBrains/blog/478030/

Вслед за релизом PHP 7.4, вчера выпустили третий мажорный релиз PhpStorm в этом году. Возможно вы уже даже успели обновиться и посмотреть, что нового. Но если нет, то всё самое важное можно глянуть в коротком видеоролике (англ):
https://www.youtube.com/watch?v=h9KGsD87t_M (поправил ссылку)

А подробный разбор прям всех изменений смотрите в хабрапосте.
источник
2019 December 09
PHP Digest
PHP-Дайджест № 169

PHP 7.4, PhpStorm 2019.3, InfectionPHP и другие релизы, статистика версий PHP, об использовании FFI, видео с прошедших конференций и митапов, порция полезных инструментов, и многое другое.

https://habr.com/ru/post/479306/
источник
2019 December 11
PHP Digest
Как выбрать файлы для предзагрузки в 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 скрипт, который подгрузит нужные классы в опкэш. Звучит как годная идея, надо пробовать.
источник
2019 December 14
PHP Digest
Если этим субботним утром вы думаете что бы посмотреть, то вот трансляция митапа в Казани https://www.youtube.com/watch?v=zZTv7HMxKXI
В программе аж 6 докладов.

Кстати, в списке мероприятия на декабрь в последнем выпуске дайджеста не было митапа SymСode в Питере. Он пройдёт 18 декабря в офисе JetBrains https://www.meetup.com/ru-RU/symcode/events/267106695/
источник
2019 December 20
PHP Digest
Пока делал видео об обновлении на PHP 7.4 с помощью PhpStorm, Никита обратил моё внимание на то, что сеттеры работают медленнее, чем присвоение свойствам напрямую. Пришлось сделать микробенчмарк. Не верить же Никите на слово?!
https://gist.github.com/pronskiy/492a0590d0fd3cfa0a02a2d7f908c494
Set typed public property:       1.408833026886s
Set via setter (no type check):  3.0818917751312s
Set private property via setter: 3.1216759681702s
Set private property via magic:  20.88130402565s

Если сеттер тривиальный, то с типизированными свойствами в нём мало смысла. Поэтому в видео есть руководство, как сделать квик-фикс для PhpStorm с помощью SSR, чтоб заменять сеттеры на лету там, где необходимо.

⚠️ Бежать и выкидывать сеттеры только из-за перфоманса смысла не имеет в 99% случаев.
источник
2019 December 23
PHP Digest
PHP-Дайджест № 170

CakePHP 4, Codeception 4, Phalcon 4 и другие релизы, порция полезных инструментов, подкасты, видео с прошедших митапов, и многое другое!

https://habr.com/p/481564/
источник
2020 January 13
PHP Digest
PHP-Дайджест № 171

4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое!

https://habr.com/p/483684/
источник
2020 January 27
PHP Digest
PHP-Дайджест № 172

PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференций, стримы и многое другое!

https://habr.com/p/485592/
источник
PHP Digest
Дженерики в PHP

Последние пару недель Никита Попов работал над исследованием возможности реализации дженериков. Если коротко, то, по словам Никиты, есть несколько серьёзных трудностей и он в целом пока не уверен, что добавить полноценные дженерики в PHP это хорошая идея. Есть PR с прототипом реализации https://github.com/nikic/php-src/pull/3 и все проблемы и открытые вопросы подробно изложены вот тут https://github.com/PHPGenerics/php-generics-rfc/issues/45
источник
2020 January 30
PHP Digest
PhpStorm 2020.1 EAP

https://blog.jetbrains.com/phpstorm/2020/01/phpstorm-2020-1-early-access-program-is-now-open/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 билды выходят каждую неделю и их можно использовать совершенно бесплатно.
источник
2020 February 10
PHP Digest
PHP-Дайджест № 173

PHPUnit 9 и другие релизы, 3 свежих RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое!

https://habr.com/p/487690/
источник
2020 February 18
PHP Digest
Будущее развитие PHP

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', [
   'strict_types' => 1,
   'no_dynamic_properties' => 1,
   // ...
]);

• Ввести понятие пакета в PHP
Прототип этого варианта оформлен в виде пул-реквеста.
Пакет надо будет явно объявлять в каждом файле.

<?php

package "nikic/php-parser";

namespace PhpParser\Node;

• Что-то на основе файловой системы
Например добавлять файл .package.php в корне пакета, который будет содержать нужную метаинформацию.

В конце Никита подводит выводу, что оптимальный вариант — это едишны + declare директивы в каждом файле.
источник
2020 February 20
PHP Digest
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
источник
2020 February 24
PHP Digest
PHP-Дайджест № 174

5 новых RFC из PHP Internals, а также предложение по развитию языка и пара прототипов новых фич для PHP в виде пул-реквестов, порция полезных инструментов, видео, подкасты и многое другое.

https://habr.com/p/489662/
источник
2020 February 25
PHP Digest
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
источник
2020 February 27
PHP Digest
Плагин для 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
источник
PHP Digest
Stringable Interface

https://wiki.php.net/rfc/stringable

Предложение от Nicolas Grekas принято. В PHP 8 можно будет использовать union-тип string|Stringable там, где ожидается строка, и передавать классы с __toString().

Интересно, что при этом если в классе реализован магический метод __toString(), то добавлять implements Stringable можно, но необязательно, потому что он неявно будет имплементирован автоматически, прям как в Golang.
источник
2020 March 10
PHP Digest
PHP-Дайджест № 175

Релизы Laravel 7 и CodeIgniter 4, атрибуты v2 и другие RFC-предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.

https://habr.com/p/491660/
источник
2020 March 17
PHP Digest
str_contains() в PHP 8

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.
источник
2020 March 23
PHP Digest
PHP-Дайджест № 176

Обновления PHP и Composer 1.10, переносы конференций, 3 новых RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.

https://habr.com/p/493594/
источник