- PVSM.RU - https://www.pvsm.ru -
Свежая подборка со ссылками на новости и материалы. В выпуске: 5 новых RFC из PHP Internals, а также предложение по развитию языка и пара прототипов новых фич в виде пул-реквестов, порция полезных инструментов, видео, подкасты и многое другое.
Приятного чтения!
opcache.preload_user
и теперь предзагрузку можно включать в продакшене.• PHP fwdays'20, Киев, 30 мая [10] — В этом году среди докладчиков тот самый Никита Попов! Для читателей дайджеста есть промокод со скидкой 15%: PHPDIGEST2020.
final
, immutable
, readonly
, writeonce
, locked
, sealed
.
class Foo
{
<keyword> public int $a = 1;
<keyword> public string $b;
<keyword> public array $c = ["foo"];
<keyword> public object $d;
public function __construct()
{
$this->b = "foo";
}
}
$foo = new Foo();
$foo->a = 42; // EXCEPTION: property a has already been initialized
$foo->b = "bar"; // EXCEPTION: property b has already been initialized
$foo->a++; // EXCEPTION: incrementing/decrementing is forbidden
unset($foo->c); // EXCEPTION: unsetting is forbidden
$foo->c[] = "bar"; // EXCEPTION: arrays can't be modified
$var= &$this->c; // EXCEPTION: reference isn't allowed
$foo->d = new Foo(); // SUCCESS: property d hasn't been initialized before
$foo->d->foo = "foo"; // SUCCESS: objects are still mutable internally
У предложения неплохие шансы. Вероятно, для таких свойств будет запрещено установление значения по умолчанию, поскольку, по сути, это то же самое, что константа класса.
str_contains(string $haystack , string $needle) :bool
, которая проверяет, содержится ли строка в другой строке вместо использования strpos()
или strstr()
.token_get_all()
[20], которая вместо микса строк и массивов возвращал бы массив объектов PhpToken
.gettype()
и get_class()
.declare(require_explicit_send_by_ref=1);
function byRef(&$ref) {...}
byRef(&$var);
interface Foo {
public function method1(int $a): void;
public function method2(): int;
public function method3(string $b): string;
public function method4(): stdClass;
// ...
}
class ComposedFoo implements Foo {
private decorated Foo $inner;
public function __construct(Foo $inner) { $this->inner = $inner; }
public function method4(): stdClass {
return $DO_SOMETHING_DIFFERENT_HERE;
}
}
/*
Свойство помечено как decorated, что означает, что автоматически будут добавлены
методы переадресации для всех публичных методов Foo, если только они не будут явно
переопределены в классе. Эти методы будут иметь полные сигнатуры, поэтому они
всё равно удовлетворяют интерфейсу.
*/
float
числа при выводе через var_dump()
(0.1 + 0.2 === 0.30000000000000004 [25]):
// Было
$sum = 0.1 + 0.2;
var_dump($sum); // float(0.3)
var_dump($sum == 0.3); // bool(false) WTF???
// Станет
$sum = 0.1 + 0.2;
var_dump($sum); // float(0.30000000000000004)
var_dump($sum == 0.3); // bool(false) Makes sense...
__toArray()
.Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [77].
Вопросы и предложения пишите на почту [78] или в твиттер [79].
Больше новостей и комментариев в Telegram-канале PHP Digest [80].
Прислать ссылку [81] — Попробуем через GitHub.
Поиск ссылок по всем дайджестам [82]
← Предыдущий выпуск: PHP-Дайджест № 173 [83]
Автор: Роман Пронский
Источник [84]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/347541
Ссылки в тексте:
[1] PHP 7.4.3: https://www.php.net/ChangeLog-7.php#7.4.3
[2] PHP 7.3.15: https://www.php.net/ChangeLog-7.php#7.3.15
[3] PHP 7.2.28: https://www.php.net/ChangeLog-7.php#7.2.28
[4] 3-й PHP-митап городского чата: https://t.me/rndphp/2575
[5] BeerPHP: https://t.me/beerphp_yaroslavl
[6] 3-й PHP-митап городского чата: https://t.me/php_nn/3465
[7] 3-й PHP-митап: https://scienceman.timepad.ru/event/1263936/
[8] 2-й PHP-митап: https://php-not-dead.timepad.ru/event/1253335/
[9] skyeng/php-communities: https://github.com/skyeng/php-communities
[10] PHP fwdays'20, Киев, 30 мая: https://fwdays.com/en/event/php-fwdays-2020
[11] Language evolution: https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md
[12] канале дайджеста: https://t.me/phpdigest/120
[13] пул-реквесте: https://github.com/php/php-rfcs/pull/2
[14] [RFC] Variable Syntax Tweaks: https://wiki.php.net/rfc/variable_syntax_tweaks
[15] [RFC] Static return type: https://wiki.php.net/rfc/static_return_type
[16] [RFC] Allow ::class on objects: https://wiki.php.net/rfc/class_name_literal_on_object
[17] [RFC] Write-Once Properties: https://wiki.php.net/rfc/write_once_properties
[18] [RFC] str_contains: https://wiki.php.net/rfc/str_contains
[19] [RFC] Object-based token_get_all() alternative: https://wiki.php.net/rfc/token_as_object
[20] token_get_all()
: https://www.php.net/manual/ru/function.token-get-all.php
[21] [RFC] get_debug_type: https://wiki.php.net/rfc/get_debug_type
[22] [RFC] Allow explicit call-site pass-by-reference annotation: https://wiki.php.net/rfc/explicit_send_by_ref
[23] [Pre-RFC] Add support for «decorator» pattern: https://github.com/php/php-src/pull/5168
[24] [PR] Use serialize_precision for printing floats in var_dump(): https://github.com/php/php-src/pull/5172
[25] 0.1 + 0.2 === 0.30000000000000004: http://0.30000000000000004.com/
[26] T-Regx/T-Regx: https://github.com/T-Regx/T-Regx
[27] lex111: https://habr.com/ru/users/lex111/
[28] vstelmakh/url-highlight: https://github.com/vstelmakh/url-highlight
[29] расширение для twig: https://github.com/vstelmakh/url-highlight-twig-extension
[30] symfony bundle: https://github.com/vstelmakh/url-highlight-symfony-bundle
[31] spiral/RoadRunner: https://github.com/spiral/roadrunner
[32] перезагружаются автоматически: https://roadrunner.dev/docs/beep-beep-reload
[33] tightenco/overload: https://github.com/tightenco/overload
[34] rainbow-alex/phi: https://github.com/rainbow-alex/phi
[35] nikic/PHP-Parser: https://github.com/nikic/PHP-Parser
[36] пачку проблем: https://github.com/nikic/PHP-Parser/issues/344
[37] Калькулятор настроек php-fpm: https://cmorrell.com/php-fpm/
[38] ergebnis/environment-variables: https://github.com/ergebnis/environment-variables
[39] Symfony 5. Быстрый старт: https://leanpub.com/symfony5-bystryj-start
[40] Неделя Symfony #686 (17-23 февраля 2020): https://symfony.com/blog/a-week-of-symfony-686-17-23-february-2020
[41] Как организовать скины в Symfony: https://habr.com/ru/post/488030/
[42] vladyslavstartsev/laravel-strict-coding-standard: https://github.com/vladyslavstartsev/laravel-strict-coding-standard
[43] thomasjohnkane/slow-query-notifier: https://github.com/thomasjohnkane/slow-query-notifier
[44] пост: https://thomaskane.io/laravel-slow-query-notifier
[45] beyondcode/laravel-server-timing: https://github.com/beyondcode/laravel-server-timing
[46] Server-Timing: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing
[47] nunomaduro/laravel-mojito: https://github.com/nunomaduro/laravel-mojito
[48] Основы кэширования в Laravel: https://adelf.tech/2019/laravel-caching-basics
[49] Создаём простое аналитическое приложение: https://laravel.demiart.ru/jobs-and-queues-part-1-analytic-app/
[50] Подключения и настройки: https://laravel.demiart.ru/jobs-and-queues-part-2-connections-and-settings/
[51] Как запустить воркеры на продакшен-сервере: https://laravel.demiart.ru/jobs-and-queues-part-3-workers-in-production/
[52] Новости Yii 2020, выпуск 2: https://opencollective.com/yiisoft/updates/yii-news-2020-issue-2
[53] DriftPHP: https://github.com/driftphp
[54] о DBAL и ORM в ReactPHP: https://www.youtube.com/watch?v=bekZ7cPmSuE
[55] driftphp/tiny-load-balancer: https://github.com/driftphp/tiny-load-balancer
[56] Асинхронный PHP: https://habr.com/ru/company/oleg-bunin/blog/487258/
[57] PHPUnit: Угроза безопасности?: https://thephp.cc/news/2020/02/phpunit-a-security-risk
[58] В какой момент PHP вызывает __destruct()?: https://dev.to/themsaid/when-does-php-call-destruct-1167
[59] О битовых масках для хранения флагов в PHP: https://stitcher.io/blog/bitwise-booleans-in-php
[60] Чистый код на PHP: https://github.com/peter-gribanov/clean-code-php/blob/ru/README.md
[61] Clean Code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
[62] Использование RabbitMQ вместе с MonsterMQ часть 1: https://habr.com/ru/post/488850/
[63] Тест для PHP-разработчиков от Badoo: https://phpevent.badoo.com/habr
[64] разбор задач: https://habr.com/ru/company/badoo/blog/346652/
[65] Оффер в Лондон за один день: как его получить и чем заняться после переезда: https://habr.com/ru/company/badoo/blog/487914/
[66] Что делать с легаси. Материалы с Badoo PHP Meetup #4: https://habr.com/ru/company/badoo/blog/489362/
[67] Что будет в PhpStorm 2020.1: https://www.youtube.com/playlist?list=PLQ176FUIyIUb7qSArPCxOkIGX-cqdfoBx
[68] PHP для абсолютных новичков: https://www.youtube.com/watch?v=yXzWfZ4N4xU
[69] PHP Internals News podcast #40: https://phpinternals.news/40
[70] Никитой Поповым: https://twitter.com/nikita_ppv
[71] PHP Internals News podcast #41: https://phpinternals.news/41
[72] Steven Wade: https://twitter.com/stevenwadejr
[73] The Undercover ElePHPant #8: https://undercover-elephpant.com/episodes/talking-tuning-php-fpm-with-arne-blankerts
[74] Arne Blankerts: https://twitter.com/arneblankerts
[75] thephp.cc: https://thephp.cc/
[76] блогпост: https://tideways.com/profiler/blog/an-introduction-to-php-fpm-tuning
[77] личку: https://habrahabr.ru/conversations/pronskiy/
[78] почту: mailto:roman@pronskiy.com
[79] твиттер: https://twitter.com/pronskiy
[80] PHP Digest: https://t.me/phpdigest
[81] Прислать ссылку: https://github.com/phpdigest/addlink/issues/1
[82] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[83] Предыдущий выпуск: PHP-Дайджест № 173: https://habr.com/ru/post/487690/
[84] Источник: https://habr.com/ru/post/489662/?utm_source=habrahabr&utm_medium=rss&utm_campaign=489662
Нажмите здесь для печати.