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

Свежая подборка со ссылками на новости и материалы. В выпуске: PHPUnit 9 и другие релизы, 3 свежих RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
Приятного чтения!
• PHP Russia 2020 [6] — К уже подтверждённым докладчикам добавился Nicolas Grekas [7]. Для читателей дайджест есть промокод со скидкой 7%: PHPDIGEST.
• skyeng/php-communities [8] — Открытый список PHP-событий, спикеров и организаторов.
class MyClass {
const VALUES = [1, 0];
const C1 = count(self::VALUES);
public static $p = count(self::VALUES);
public function foo($param = count(self::VALUES))
{
static $bar = count(self::VALUES);
}
}
__toArray(), который будет вызываться при явном приведении объекта к массиву, когда объект передаётся в качестве параметра функции с типом array или когда возвращается с указанием return type array.
class Person
{
protected $name;
protected $email;
public function __toArray()
{
return [
'name' => $this->name,
'email' => $this->email,
];
}
}
$person = new Person('John Doe', 'j.doe@example.com');
$personArray = (array) $person; // вызывает __toArray()
function foo(array $person) {
var_dump($person); // Здесь массив
}
function bar(Person $person): array {
return $person;
}
var_dump(bar($person)); // и здесь массив
trait T {
abstract public function test(int $x);
}
class C {
use T;
// Работает сейчас, но не должно из-за несоответствия типов
public function test(string $x) {}
}
Предлагается исправить это поведение.
Ранее было опубликовано в виде пул-реквеста, но присутствует обратная несовместимость, которая требует пройти через RFC-процесс: если в текущем коде объявлен реализован абстрактный метод из трейта с другой сигнатурой, то изменение вызовет ошибку.
CLI интерфейс для Laravel Artisan [42]
Книга «Архитектура сложных веб-приложений. С примерами на Laravel» [43].
Разработка приложений и Blue-Green deployment [58] опираясь на методологию The Twelve-Factor App с примерами на php и docker.
Работа с IPv6 в PHP [59]
Железо или оптимизация? Badoo, Авито и Мамба — о производительности PHP [60]
Эволюция обработки вебхуков Facebook: с нуля до 25 000 в секунду [61]Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [76].
Вопросы и предложения пишите на почту [77] или в твиттер [78].
Telegram-канал: PHP Digest [79].
Прислать ссылку [80]
Поиск ссылок по всем дайджестам [81]
← Предыдущий выпуск: PHP-Дайджест № 172 [82]
Автор: Роман Пронский
Источник [83]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/346106
Ссылки в тексте:
[1] Developer Ecosystem Survey 2020: https://surveys.jetbrains.com/s3/a10-developer-ecosystem-survey-2020
[2] PHP Internals: https://blog.jetbrains.com/phpstorm/2020/01/our-pledge-to-open-source/#a_php_internals_gathering
[3] Badoo PHP Meetup #4. Легаси: https://habr.com/ru/company/badoo/blog/485732/
[4] Первая встреча PHP-чата (с докладами): https://t.me/php_vrn/361
[5] 3-й PHP-митап городского чата: https://t.me/rndphp/2575
[6] PHP Russia 2020: https://phprussia.ru/moscow/2020/
[7] Nicolas Grekas: https://twitter.com/nicolasgrekas
[8] skyeng/php-communities: https://github.com/skyeng/php-communities
[9] [RFC] Allow function calls in constant expressions: https://wiki.php.net/rfc/calls_in_constant_expressions
[10] [RFC] __toArray(): https://wiki.php.net/rfc/to-array
[11] [RFC] Userspace operator overloading: https://wiki.php.net/rfc/userspace_operator_overloading
[12] активно обсуждается: https://externals.io/message/108300
[13] lisachenko/z-engine: https://github.com/lisachenko/z-engine#object-extensions-api
[14] [RFC] Validation for abstract trait methods: https://wiki.php.net/rfc/abstract_trait_method_validation
[15] Static return type: https://wiki.php.net/rfc/static_return_type
[16] Variable Syntax Tweaks: https://wiki.php.net/rfc/variable_syntax_tweaks
[17] Allow ::class on objects: https://wiki.php.net/rfc/class_name_literal_on_object
[18] declare(function_and_const_lookup='global'): https://wiki.php.net/rfc/use_global_elements
[19] Дженерики в PHP: https://t.me/phpdigest/117
[20] результаты: https://github.com/PHPGenerics/php-generics-rfc/issues/45
[21] php/doc-en: https://github.com/php/doc-en
[22] edit.php.net: https://edit.php.net/
[23] PHPUnit 9: https://phpunit.de/announcements/phpunit-9.html
[24] инструкции по апгрейду: https://thephp.cc/news/2020/02/migrating-to-phpunit-9
[25] php-ai/php-ml: https://github.com/php-ai/php-ml
[26] Документация на русском: https://php-ml.ru/
[27] salsify/jsonstreamingparser: https://github.com/salsify/jsonstreamingparser
[28] @IssecMura: https://twitter.com/IssecMura
[29] spatie/docker: https://github.com/spatie/docker
[30] kitetail/zttp: https://github.com/kitetail/zttp
[31] lisachenko/immutable-object: https://github.com/lisachenko/immutable-object
[32] lisachenko/z-engine: https://github.com/lisachenko/z-engine
[33] symfony/polyfill-php80: https://github.com/symfony/polyfill-php80
[34] paratestphp/paratest: https://github.com/paratestphp/paratest
[35] Неделя Symfony #684 (3-9 февраля 2020): https://symfony.com/blog/a-week-of-symfony-684-3-9-february-2020
[36] haruncpi/laravel-log-reader: https://github.com/haruncpi/laravel-log-reader
[37] calebporzio/sushi: https://github.com/calebporzio/sushi
[38] Использование примесей (mixin) в Laravel: https://liamhammett.com/laravel-mixins-KEzjmLrx
[39] Laravel больше чем CRUD: https://stitcher.io/laravel-beyond-crud
[40] 09. О тестовых фабриках: https://stitcher.io/blog/laravel-beyond-crud-09-test-factories
[41] Laravel Snippet #22: https://blog.laravel.com/laravel-snippet-22-laracon-online-inertiajs-livewire-spas-reviewing-the-day
[42] CLI интерфейс для Laravel Artisan: https://habr.com/ru/post/485952/
[43] «Архитектура сложных веб-приложений. С примерами на Laravel»: https://github.com/adelf/acwa_book_ru
[44] Сергей Жук беседует с Marc Morera: https://www.youtube.com/watch?v=uebhqc2BZXw
[45] автором (DriftPHP: https://github.com/driftphp
[46] driftphp/awesome-reactphp: https://github.com/driftphp/awesome-reactphp
[47] Новое в PHP 8: https://stitcher.io/blog/new-in-php-8
[48] Type matching in PHP: https://steemit.com/php/@crell/type-matching-in-php
[49] match из Rust: https://doc.rust-lang.org/rust-by-example/flow_control/match.html
[50] Enums without enums in PHP: https://stitcher.io/blog/enums-without-enums
[51] О том как писать PHPDoc для массивов: https://suckup.de/2020/02/modern-phpdoc-annotations/
[52] deep-assoc-completion: https://plugins.jetbrains.com/plugin/9927-deep-assoc-completion
[53] Об аспектно-ориентированном программировании в PHP: https://medium.com/@ivastly/application-instrumentation-with-aspect-oriented-programming-in-php-18b1defa682
[54] Go!AOP: https://github.com/goaop/framework
[55] Redux в 30 строк на PHP: https://sorin.live/redux-in-50-lines-of-php/
[56] эксплоиты: https://github.com/mm0r1/exploits
[57] разбор этого класса уязвимостей: https://x-c3ll.github.io//posts/UAF-PHP-disable_functions/
[58] Разработка приложений и Blue-Green deployment: https://habr.com/ru/post/480020/
[59] Работа с IPv6 в PHP: https://habr.com/ru/company/ua-hosting/blog/484586/
[60] Железо или оптимизация? Badoo, Авито и Мамба — о производительности PHP: https://habr.com/ru/company/badoo/blog/487234/
[61] Эволюция обработки вебхуков Facebook: с нуля до 25 000 в секунду: https://habr.com/ru/company/oleg-bunin/blog/486844/
[62] Большой видеокурс по Event Sourcing: https://eventsourcery.com/public-episodes
[63] О снэпшот-тестирования с PHPUnit: https://laracasts.com/series/guest-spotlight/episodes/6
[64] spatie/phpunit-snapshot-assertions: https://github.com/spatie/phpunit-snapshot-assertions
[65] Видеозаписи PHPKonf 2019: https://www.youtube.com/playlist?list=PLc15X3-Essu7Qc9lBGj-zZoYqhct8IESV
[66] как предложить свою идею для PHP чтоб её приняли: https://www.youtube.com/watch?v=AdKya1HLDZQ&list=PLc15X3-Essu7Qc9lBGj-zZoYqhct8IESV&index=9
[67] The Undercover ElePHPant #7: https://undercover-elephpant.com/episodes/talking-logging-for-production-applications-best-practices-with-jordi-boggiano
[68] monolog: https://github.com/Seldaek/monolog
[69] PHP Internals News #38: https://phpinternals.news/38
[70] PHP Internals News #39: https://phpinternals.news/39
[71] Stringable: https://wiki.php.net/rfc/stringable
[72] bragful/ephp: https://github.com/bragful/ephp
[73] Xdebug cloud: https://cloud.xdebug.com/
[74] конференции SunshinePHP (на 47:45): https://m.twitch.tv/videos/548927794
[75] PhpQuiz: https://t.me/phpquiz
[76] личку: https://habrahabr.ru/conversations/pronskiy/
[77] почту: mailto:roman@pronskiy.com
[78] твиттер: https://twitter.com/pronskiy
[79] PHP Digest: https://t.me/phpdigest
[80] Прислать ссылку: https://bit.ly/php-digest-add-link
[81] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[82] Предыдущий выпуск: PHP-Дайджест № 172: https://habr.com/ru/post/485592/
[83] Источник: https://habr.com/ru/post/487690/?utm_source=habrahabr&utm_medium=rss&utm_campaign=487690
Нажмите здесь для печати.