- PVSM.RU - https://www.pvsm.ru -
Фото: Валерий Горбачев (PHP Krasnodar [1])
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 3 и видеообзоры новых возможностей, Composer 2, завершение разработки Faker (теперь в новой организации), два новых RFC для PHP 8.1, порция полезных инструментов, статьи, видео с прошедших митапов.
Приятного чтения!
Свежие материалы по PHP 8:
#[ArrayShape]
, #[ExpectedValues]
, #[NoReturn]
, #[Pure]
, #[Deprecated]
, #[Immutable]
. Причем #[ArrayShape]
и #[Immutable]
будут работать даже с более ранними версиями PHP."platform-check": false
);--dry-run
флаг для require
и remove
– тестовый прогон команды, чтоб увидеть, что будет в итоге;--unused
флаг для remove
поможет удалить ненужные зависимости из vendor
, которых нет в composer.json
(типа purge);Подробнее об изменениях можно почитать на php.watch [17] или чуть короче в переводе на Хабре [18].
Чтобы обновиться на новую версию, достаточно запустить: composer self-update --2
.
Передавать права François Zaninotto не хотел, во-первых, потому что хочет оставить проект с 25k+ звезд на своем аккаунте. А во-вторых, потому что в прошлом был автором популярной ORM Propel. Контроль над ней он передал другому разработчику, который совершил единственную худшую стратегическую ошибку [23] решив переписать все с нуля. Прошло 7 лет и стабильная версия Propel 2 до сих пор не вышла. Хотя это и не мешает использовать альфа-версии.
Спасибо François [24] за 9 лет работы над Faker.
Ближайшие митапы: Калининград, 4 ноября [28]; Краснодар, 7 ноября [29]; Нижний Новгород, 14 ноября [30].
class Person
{
public function __construct(
private string $firstName,
) {}
public function getFirstName(): string => $this->firstName;
}"
0x
, а двоичные с 0b
. Восьмеричные же сейчас выбиваются из ряда и записываются с префиксом 0
. Кроме неконсистентности, это может привести к проблемам при нестрогом сравнении с числовой строкой. Например, 016
в десятичном представлении равно 14
и в результате "016" == 016; // false
.
Предлагается для восьмеричных чисел разрешить нотацию с префиксом 0o
, которая является стандартом и используется во многих других языках.
0o16 === 14; // true
016 === 0o16; // true
"016" == 0o16; // false
function foo(): "foo"|"bar" {
return "foo";
}
Литеральный тип вряд ли будет реализован в PHP, но вот есть черновик RFC с предложением алгебраического типа данных [35], т. е. продвинутых перечислений.
$randomChars = Randomize::sequence()->chars()->count(10)->noDuplicates()->generate();
/_fragment
и слабого/дефолтного секрета.
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [81].
Больше новостей и комментариев в Telegram-канале PHP Digest [82].
Прислать ссылку [83]
Поиск ссылок по всем дайджестам [84]
← Предыдущий выпуск: PHP-Дайджест № 190 [85]
Автор: Роман Пронский
Источник [86]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/358503
Ссылки в тексте:
[1] PHP Krasnodar: https://t.me/phpkrd
[2] PHP 8.0 RC 3: https://www.php.net/archive/2020.php#2020-10-29-2
[3] Серия видеороликов по всем новым фичам от Spatie: https://spatie.be/videos/front-line-php
[4] на YouTube: https://www.youtube.com/playlist?list=PLjzBMxW2XGTwEwWumYBaFHy1z4W32TcjU
[5] Отличный обзор изменений с интерактивными демо: https://pociot.dev/32-php-8-try-out-all-new-features
[6] PHP 8 — пробуем новые возможности: https://habr.com/ru/company/mailru/blog/525614/
[7] Видеокурс по новым фичам: https://beyondco.de/course/whats-new-in-php-8/new-features/union-types
[8] Weak maps: https://platform.sh/blog/2020/php-80-feature-focus-weak-maps/
[9] FFI: https://platform.sh/blog/2020/php-fun-with-ffi-just-enough-c/
[10] JIT: https://platform.sh/blog/2020/php-80-feature-focus-just-in-time-compilation/
[11] Самые частые ошибки совместимости с PHP 8.0 и как их исправить: https://www.exakat.io/en/common-php-8-0-compilation-error-messages/
[12] В PhpStorm 2020.3 будут доступны кастомные атрибуты для PHP 8: https://blog.jetbrains.com/phpstorm/2020/10/phpstorm-2020-3-eap-4/
[13] PHP 7.4.12: https://www.php.net/ChangeLog-7.php#7.4.12
[14] PHP 7.3.24: https://www.php.net/ChangeLog-7.php#7.3.24
[15] Composer 2: https://blog.packagist.com/composer-2-0-is-now-available/
[16] много другого: https://github.com/composer/composer/releases/tag/2.0.0
[17] на php.watch: https://php.watch/articles/composer-2
[18] в переводе на Хабре: https://habr.com/ru/post/524916/
[19] Закат PHP Faker: https://marmelab.com/blog/2020/10/21/sunsetting-faker.html
[20] PR по поддержке PHP 8: https://github.com/fzaninotto/Faker/pull/2063
[21] fzaninotto/Faker: https://github.com/fzaninotto/Faker
[22] fakerphp/Faker: https://github.com/fakerphp/Faker
[23] единственную худшую стратегическую ошибку: https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
[24] François: https://twitter.com/francoisz
[25] PHP Russia 2020 -> PHP Russia 2021: https://phprussia.ru/moscow/2020
[26] перенесли: https://t.me/PHPRussiaConfChannel/153
[27] phpcommunity.ru: https://phpcommunity.ru/
[28] Калининград, 4 ноября: https://gdg-kaliningrad.timepad.ru/event/1460215/
[29] Краснодар, 7 ноября: https://phpcommunity.ru/meetup-krasnodar
[30] Нижний Новгород, 14 ноября: https://phpcommunity.ru/meetup-nn-3
[31] [RFC] Short Functions: https://wiki.php.net/rfc/short-functions
[32] [RFC] Explicit octal integer literal notation: https://wiki.php.net/rfc/explicit_octal_notation
[33] Literal types PoC: https://github.com/BogdanUngureanu/php-src/commit/37413543fafb300468d83ed8fcc72dc859c577cb
[34] в TypeScript: https://www.typescriptlang.org/docs/handbook/literal-types.html
[35] RFC с предложением алгебраического типа данных: https://wiki.php.net/rfc/enumerations_and_adts
[36] Infection PHP 0.20: https://infection.github.io/2020/11/01/whats-new-in-0.20.0/
[37] JustSteveKing/php-sdk: https://github.com/JustSteveKing/php-sdk
[38] Hi-Folks/rando-php: https://github.com/Hi-Folks/rando-php
[39] voku/PHPDoctor: https://github.com/voku/PHPDoctor#-phpdoctor
[40] Psalm 4: https://psalm.dev/articles/psalm-4
[41] phpDocumentor v3.0.0: https://github.com/phpDocumentor/phpDocumentor/releases/tag/v3.0.0
[42] A/B тесты на Symfony: https://dev.to/scullwm/ab-tests-with-symfony-5-made-easy-1km4
[43] travaux-com/VariantRetriever: https://github.com/travaux-com/VariantRetriever
[44] Неделя Symfony #722 (26 октября — 1 ноября 2020): https://symfony.com/blog/a-week-of-symfony-722-26-october-1-november-2020?utm_medium=feed
[45] Удаленное выполнение кода (RCE) на Symfony сайтах: https://www.ambionics.io/blog/symfony-secret-fragment
[46] jessarcher/laravel-castable-data-transfer-object: https://github.com/jessarcher/laravel-castable-data-transfer-object
[47] в посте: https://jessarcher.com/blog/casting-json-columns-to-value-objects/
[48] Collector: https://plugins.jetbrains.com/plugin/15246-collector
[49] spatie/laravel-route-attributes: https://github.com/spatie/laravel-route-attributes
[50] Нестандартный Laravel: https://ryangjchandler.co.uk/articles/unconventional-laravel-auto-validating-models
[51] Laravel–Дайджест (26 октября – 1 ноября 2020): https://habr.com/ru/post/525990/
[52] Laravel Worldwide Meetup #4:: https://freek.dev/1817-laravel-worldwide-meetup-4-github-actions-unconventional-autoloaders
[53] «GitHub Actions для Laravel разработчиков»: https://www.youtube.com/watch?v=1kPu2eQjkGk&t=292s
[54] «Нетрадиционные автозагрузчики»: https://youtu.be/1kPu2eQjkGk?t=2258
[55] Laravel Fireside — 21.10.2020: https://www.youtube.com/watch?v=bfRUfy0Ywdo
[56] Обновился PhpStorm плагин Yii2 Support: https://plugins.jetbrains.com/plugin/9388-yii2-support
[57] yiisoft/security 1.0: https://github.com/yiisoft/security
[58] Делаем ООП правильно: https://front-line-php.com/object-oriented
[59] о важности использования пула HTTP-соединений в хайлоаде на PHP: https://techblog.wikimedia.org/2020/10/26/impact-of-using-http-connection-pooling-for-php-applications-at-scale/
[60] envoyproxy/envoy: https://github.com/envoyproxy/envoy
[61] Сравнение инструментов подсчета покрытия кода: https://php.watch/articles/php-code-coverage-comparison
[62] Как убрать лишние детали из тестов: https://www.kai-sassnowski.com/post/reducing-unnecessary-details-in-tests/
[63] О разнице между Value Object и Data Transfer Object.: https://github.com/spatie/data-transfer-object/issues/17#issuecomment-434200968
[64] Эволюция PHP — от 5.6 до 8.0 (Часть 1): https://habr.com/ru/company/otus/blog/524270/
[65] (Часть 2): https://habr.com/ru/company/otus/blog/524990/
[66] Откуда берется заголовок Content-Type: nginx + php-fpm: https://habr.com/ru/post/524906/
[67] SDCast #124: https://sdcast.ksdaemon.ru/2020/10/sdcast-124/
[68] Нюансы WeakReference & WeakMap на конкретном примере / Валентин Удальцов: https://www.youtube.com/watch?v=r1HDMu7nJh0
[69] задачи: https://t.me/phpyh/182
[70] Пых: https://t.me/phpyh
[71] Escaping from OOP boundaries: https://youtu.be/9yeBgUyJBeQ?t=416
[72] lisachenko/z-engine: https://github.com/lisachenko/z-engine
[73] Большие проекты, архитектура и фреймворки: https://youtu.be/qE87-jf3kRs?t=21939
[74] Очень странные дела на PHP (Кирилл Несмеянов, PHP Russia): https://www.youtube.com/watch?v=1ZO1wR4rCCQ
[75] Безопасность: от принципов до особенностей PHP (Александр Макаров, Yii): https://www.youtube.com/watch?v=KUaUlAqAf_U
[76] Перенос проекта с PHP4 на PHP7 (Максим Шамаев, Skyeng): https://www.youtube.com/watch?v=MX7Wbt9rCsg
[77] Переезд с PHP на Go (Илья Фроликов, Туту.ру): https://www.youtube.com/watch?v=dYVrXYYkwy8
[78] От Doctrine ORM к CQRS за 20 минут (Дмитрий Симушев, Райффайзенбанк): https://www.youtube.com/watch?v=LmiSpznZWTU
[79] Митап ульяновского PHP-сообщества: https://www.youtube.com/watch?v=fASGg3utLko
[80] Доклады от самарского PHP-сообщества: https://www.youtube.com/watch?v=u1rSqjFu3pY
[81] личку: https://habrahabr.ru/conversations/pronskiy/
[82] PHP Digest: https://t.me/phpdigest
[83] Прислать ссылку: https://bit.ly/php-digest-add-link
[84] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[85] Предыдущий выпуск: PHP-Дайджест № 190: https://habr.com/ru/post/524040/
[86] Источник: https://habr.com/ru/post/526098/?utm_source=habrahabr&utm_medium=rss&utm_campaign=526098
Нажмите здесь для печати.