- PVSM.RU - https://www.pvsm.ru -

Фото Erika Heidi [1]
Свежая подборка со ссылками на новости и материалы. В выпуске: 3 новых и 4 принятых RFC предложения для PHP 8, включая объявление свойств в конструкторе, о блокировке PHP-ML из-за плагиата, почему разработчики ненавидят PHP, порция полезных инструментов, видео и многое другое.
Приятного чтения!
Автор PHP-ML опубликовал свою версию событий [4] с подробной хронологией, а также перенес код PHP-ML на GitLab gitlab.com/php-ai/php-ml [5].
В комментариях к посту указали на пачку файлов [6], которые ранее были явно скопированы в обратную сторону: из PHP-ML в RubixML. Так что, кто прав – каждый сделает вывод для себя сам, но если вдруг вы получили DMCA-предупреждение, то действовать стоит очень быстро, иначе репозиторий удалят через 24 часа.
Кстати, на весь код из ответов на StackOverflow [7] распространяется лицензия CC BY-SA 4.0 [8]. Значит ли это, что если вы использовали примеры кода, то ваш код должен быть под этой же лицензией? ¯_(ツ)_/¯
yield from для обычного массива. Если вы активно используете генераторы, эту версию лучше пропустить.// Было
class Point {
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0,
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}
// Стало
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}
Похожая возможность есть в Hack, TypeScript, Kotlin, Scala. Посмотрим, как приживется в PHP. В комбинации с атрибутами выглядит интересно:
class Foo {
public function __construct(
<<ExampleAttribute>>
public int $prop,
) {}
}
mixed в PHP 8. Подробнее о плюсах на канале PHP Digest [16] или в посте о новом пcевдотипе mixed [17].catch:
try {
changeImportantData();
} catch (PermissionException) {
echo "You don't have permission to do this";
}
Error трейсы можно реализовать в кастомном обработчике, то, вероятно, эта возможность и будет добавлена только для Error.match, которое работает как switch, но при этом имеет проверку типа и возможность возвращать значение.
echo match (1) {
0 => 'Foo',
1 => 'Bar',
2 => 'Baz',
};
//> Bar
После неудачного голосования была убрана возможность использовать блоки.
<<Attr1, Attr2>>, переименовать PhpAttribute в просто Attribute. Также добавить валидацию на целевую сущность, чтоб можно было указать, что конкретный атрибут можно вешать только на класс/метод/свойство. Кроме того, сейчас один и тот же атрибут можно вешать несколько раз. Предлагается по умолчанию запретить повторения, а если они нужны, то атрибут надо будет объявить еще с атрибутом RepeatableAttribute.Id.Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [67].
Вопросы и предложения пишите на почту [68] или в твиттер [69].
Больше новостей и комментариев в Telegram-канале PHP Digest [70].
Прислать ссылку [71]
Поиск ссылок по всем дайджестам [72]
← Предыдущий выпуск: PHP-Дайджест № 180 [73]
Автор: Роман Пронский
Источник [74]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/353551
Ссылки в тексте:
[1] Erika Heidi: https://twitter.com/erikaheidi
[2] RubixML: https://github.com/RubixML/RubixML
[3] уличен: http://archive.vn/d0blx
[4] свою версию событий: https://arkadiuszkondas.com/dmca-php-ml-and-copyright-boundaries/
[5] gitlab.com/php-ai/php-ml: https://gitlab.com/php-ai/php-ml
[6] пачку файлов: https://arkadiuszkondas.com/dmca-php-ml-and-copyright-boundaries/#comment-4930849884
[7] ответов на StackOverflow: https://stackoverflow.com/help/licensing
[8] CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/
[9] Статистика версий PHP – 2020.1: https://blog.packagist.com/php-versions-stats-2020-1-edition/
[10] В PHP 7.4.6 есть ошибка: https://twitter.com/nikita_ppv/status/1264857231167807489
[11] Стартовала программа раннего доступа (EAP) PhpStorm 2020.2 : https://blog.jetbrains.com/phpstorm/2020/05/phpstorm-2020-2-early-access-program-is-now-open/
[12] Почему разработчики ненавидят PHP: https://www.jesuisundev.com/en/why-developers-hate-php/
[13] PHP fwdays | Speacial Edition: https://fwdays.com/en/event/php-fwdays-special-edition
[14] [RFC] Constructor Property Promotion: https://wiki.php.net/rfc/constructor_promotion
[15] [RFC] Mixed Type v2: https://wiki.php.net/rfc/mixed_type_v2
[16] канале PHP Digest: https://t.me/phpdigest/147
[17] новом пcевдотипе mixed: https://php.watch/versions/8.0/mixed-type
[18] [RFC] Always available JSON extension: https://wiki.php.net/rfc/always_enable_json
[19] [RFC] non-capturing catches: https://wiki.php.net/rfc/non-capturing_catches
[20] [RFC] Error backtraces: https://wiki.php.net/rfc/error_backtraces
[21] [RFC] Match expression v2: https://wiki.php.net/rfc/match_expression_v2
[22] [RFC] Attribute Amendments: https://wiki.php.net/rfc/attribute_amendments
[23] pestphp/pest: https://github.com/pestphp/pest
[24] документация: https://pestphp.com/
[25] видеороликов: https://www.youtube.com/playlist?list=PLNXrjfSe7qHncCyQYOqJBTsTbYPotMaZ8
[26] facebook/jest: https://github.com/facebook/jest
[27] Moxio/sqlite-extended-api: https://github.com/Moxio/sqlite-extended-api
[28] lisachenko/z-engine: https://github.com/lisachenko/z-engine
[29] rashidlaasri/travel: https://github.com/rashidlaasri/travel
[30] FriendsOfPHP/pickle: https://github.com/FriendsOfPHP/pickle
[31] webdevium/processes: https://github.com/webdevium/processes
[32] dsuurlant/response2schema: https://github.com/dsuurlant/response2schema
[33] php-casbin/php-casbin: https://github.com/php-casbin/php-casbin
[34] Symfony 5.1: https://symfony.com/blog/symfony-5-1-curated-new-features
[35] заменили: https://github.com/symfony/symfony/pull/36876/
[36] волну обсуждений: https://twitter.com/nicolasgrekas/status/1263023258938548225
[37] Неделя Symfony #700 (25-31 мая 2020): https://symfony.com/blog/a-week-of-symfony-700-25-31-may-2020
[38] spatie/laravel-multitenancy: https://github.com/spatie/laravel-multitenancy/
[39] блогпост: https://freek.dev/1661-an-unopinionated-package-to-make-laravel-apps-tenant-aware
[40] Стрим: https://www.youtube.com/watch?v=1bucfsyAZtI
[41] spiral/roadrunner-laravel: https://github.com/spiral/roadrunner-laravel
[42] RoadRunner: https://github.com/spiral/roadrunner
[43] Избегаем наследования в Laravel: https://jasonmccreary.me/articles/avoiding-inheritance-laravel/
[44] Laravel Livewire — Камень, ножницы, бумага: https://www.youtube.com/playlist?list=PLvP6XNj3GUhB4idkTp1KPBki3-070Ymcq
[45] Пятиминутки PHP: https://5minphp.ru/
[46] Laravel Livewire: https://github.com/livewire/livewire
[47] clue/reactphp-zlib: https://github.com/clue/reactphp-zlib
[48] блогпост: https://clue.engineering/2020/introducing-reactphp-zlib
[49] Что нового в PHP 8: https://kinsta.com/blog/php-8/
[50] Обзор атрибутов в PHP 8: https://php.watch/articles/php-attributes
[51] PHP 8 в восьми кусочках кода: https://habr.com/ru/post/504356/
[52] PHP 7.4 в семи кусках кода: https://stitcher.io/blog/php-74-in-7-code-blocks
[53] Принцип подстановки Лисков в PHP: https://php.watch/articles/php-lsp
[54] О фантомных типах: http://marcosh.github.io/post/2020/05/26/phantom-types-in-php.html
[55] Как лучше делать имена для событий:: https://www.tomasvotruba.com/blog/2020/05/25/the-bulletproof-event-naming-for-symfony-event-dispatcher/
[56] Экспорт в Excel просто, быстро и красиво: https://medium.com/phpyh/%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%B2-excel-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE-%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE-%D0%B8-%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D0%B2%D0%BE-e199b8157b8a
[57] Чистая архитектура на PHP. Как её измерять и контролировать?: https://habr.com/ru/post/504590/
[58] PHP Internals News #55: https://phpinternals.news/55
[59] Ignace Nyamagana Butera: https://twitter.com/nyamsprod
[60] PHP Internals News #54: https://phpinternals.news/54
[61] Gabriel Caruso: https://twitter.com/carusogabriel
[62] Ensure correct signatures of magic methods: https://wiki.php.net/rfc/magic-methods-signature
[63] Между скобок № 8: https://soundcloud.com/between-braces/8-oleg-sklyarov-pro-nastavnichestvo
[64] PHP + Vulkan: https://www.youtube.com/watch?v=v6ueRknSqc0&list=PLDI5V3o4oKBXOpbAijmk1fjz-h7OBZbqj
[65] SerafimArts: https://habr.com/ru/users/serafimarts/
[66] 3-й онлайн PHP-митап: https://www.youtube.com/watch?v=ZYMEb_30kuo
[67] личку: https://habrahabr.ru/conversations/pronskiy/
[68] почту: mailto:roman@pronskiy.com
[69] твиттер: https://twitter.com/pronskiy
[70] PHP Digest: https://t.me/phpdigest
[71] Прислать ссылку: https://bit.ly/php-digest-add-link
[72] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[73] Предыдущий выпуск: PHP-Дайджест № 180: https://habr.com/ru/post/502442/
[74] Источник: https://habr.com/ru/post/504734/?utm_source=habrahabr&utm_medium=rss&utm_campaign=504734
Нажмите здесь для печати.