- PVSM.RU - https://www.pvsm.ru -
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 Beta 1, снова о синтаксисе атрибутов в PHP 8: #[Attr]
vs @[Attr]
, предложение по синтаксису для BigInt, обзоры PHP 8 и много других видео, инструменты, стримы, подкасты.
Приятного чтения!
Tycon Andre привел [11] примеры, не очень удачного поведения варианта #[Attr]
в PHP 7. C другой стороны, какая разница, если остальные варианты просто отвалятся с ошибкой парсинга?
И сравнение синтаксисов @@Attr
, #[Attr]
, <<Attr>>
и @[Attr]
:
@@ORMEntity
@@ORMTable("user")
class User
{
@@ORMId @@ORMColumn("integer") @@ORMGeneratedValue
private $id;
@@ORMColumn("string", ORMColumn::UNIQUE)
@@AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])
private $email;
}
#[
ORMEntity,
ORMTable("user")
]
class User
{
#[ORMId, ORMColumn("integer"), ORMGeneratedValue]
private $id;
#[ORMColumn("string", ORMColumn::UNIQUE)]
#[AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])]
private $email;
}
@[
ORMEntity,
ORMTable("user")
]
class User
{
@[ORMId, ORMColumn("integer"), ORMGeneratedValue]
private $id;
@[ORMColumn("string", ORMColumn::UNIQUE)]
@[AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])]
private $email;
}
<<
ORMEntity,
ORMTable("user")
>>
class User
{
<<ORMId, ORMColumn("integer"), ORMGeneratedValue>>
private $id;
<<ORMColumn("string", ORMColumn::UNIQUE)>>
<<AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])>>
private $email;
}
@:ORMEntity
@:ORMTable("user")
class User
{
@:ORMId @:ORMColumn("integer") @:ORMGeneratedValue
private $id;
@:ORMColumn("string", ORMColumn::UNIQUE)
@:AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])
private $email;
}
// Именованный параметр включен явно
function callBar(Foo $:parameterName) {
$internalName->bar();
}
$x = new Foo();
callBar(parameterName: $x);
// Параметр не именованный
function callBar($externalName) {
$externalName->bar();
}
$x = new Foo();
callBar(externalName: $x); // Error: cannot call function callBar() using parameter $externalName by name.
Поскольку PHP 8 уже заморожен для новых фич, то данное предложение возможно только в 8.1, да и то маловероятно.
Предлагается реализовать в PHP синтаксис для больших чисел аналогичный JavaScript с добавлением в конце суффикса «n»:
$theBiggestInt = 9007199254740991n
При этом под капотом будет использоваться GMP. А поскольку для объектов GMP уже перегружены арифметические операторы, а также битовые и сравнения, то работа с такими числами будет прозрачной.
php -a
), предложен PR [16], который позволит задавать колбэк отрабатывающий на вывод из интерактивного шелла. Или пока можно использовать bobthecow/psysh [17].Представление о том, как выглядит KPHP сейчас можно сделать, посмотрев на плагин для PhpStorm, который опубликовали разработчики.
Код плагина открыт github.com/unserialize/kphpstorm [42].
declare(strict_types=1)
.?->
в PHP 8.Серые и черные также есть в магазине Symfony shop.symfony.com [65] — теперь с доставкой по всему миру.
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [66].
Вопросы и предложения пишите на почту [67] или в твиттер [68].
Больше новостей и комментариев в Telegram-канале PHP Digest [69].
Прислать ссылку [70]
Поиск ссылок по всем дайджестам [71]
← Предыдущий выпуск: PHP-Дайджест № 185 [72]
Автор: Роман Пронский
Источник [73]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/356070
Ссылки в тексте:
[1] PHP 8.0.0 Beta 1: https://www.php.net/archive/2020.php#2020-08-06-3
[2] заканчивается: https://externals.io/message/111308
[3] список новых возможностей и изменений: https://github.com/php/php-src/blob/php-8.0.0beta1/UPGRADING
[4] PHP 7.4.9: https://www.php.net/releases/7_4_9.php
[5] 7.3.21: https://www.php.net/releases/7_3_21.php
[6] 7.2.33: https://www.php.net/releases/7_2_33.php
[7] уязвимости в phar: https://bugs.php.net/bug.php?id=79797
[8] WordPress 5.5 “Eckstine”: https://wordpress.org/news/2020/08/eckstine/
[9] [RFC] Shorter Attribute Syntax Change: https://wiki.php.net/rfc/shorter_attribute_syntax_change#voting
[10] продолжается: https://t.me/phpdigest/174
[11] привел: https://externals.io/message/111416#111508
[12] [RFC] Named Parameters explicit opt in: https://wiki.php.net/rfc/renamed_parameters
[13] [Proposal] Bigint shorthand (123n) for GMP objects: https://github.com/php/php-src/pull/5930
[14] предложение: https://externals.io/message/111372
[15] дискуссии: https://externals.io/message/111073
[16] PR: https://github.com/php/php-src/pull/5962
[17] bobthecow/psysh: https://github.com/bobthecow/psysh
[18] [RFC] PHP Namespace Policy: https://wiki.php.net/rfc/php_namespace_policy
[19] PHPUnit 9.3: https://github.com/sebastianbergmann/phpunit/blob/9.3.0/ChangeLog-9.3.md#930---2020-08-07
[20] sebastianbergmann/cli-parser: https://github.com/sebastianbergmann/cli-parser
[21] coduo/php-matcher: https://github.com/coduo/php-matcher
[22] phpfn/phpfn: https://github.com/phpfn/phpfn
[23] SerafimArts: https://habr.com/ru/users/serafimarts/
[24] hidehalo/nanoid-php: https://github.com/hidehalo/nanoid-php
[25] woohoolabs/zen: https://github.com/woohoolabs/zen
[26] loophp/collection: https://github.com/loophp/collection
[27] mrsuh/json-validation-bundle: https://github.com/mrsuh/json-validation-bundle
[28] json-schema.org: http://json-schema.org
[29] Деплоим Symfony-приложение на AWS Lambda: https://medium.com/@smaine.milianni/aws-lambda-and-symfony-6d3e9831c3cd
[30] SSR: рендеринг ReactJS приложения на бекэнде используя PHP: https://habr.com/ru/post/513682/
[31] Очереди Laravel: Запуск одной и той же джобы несколько раз.: https://divinglaravel.com/laravel-queues-in-action-running-the-same-job-multiple-times
[32] Не используйте защиту от массового присваивания в ваших моделях Laravel: https://www.youtube.com/watch?v=XNy0hldKHjM
[33] Better Laravel Way: https://www.youtube.com/playlist?list=PL1BlcTalLDBcosZR3ynk_tU80_ke1ar3s
[34] Laravel-Дайджест (10–16 августа 2020): https://habr.com/ru/post/515338/
[35] Тестирование микросервисов на PHP с помощью Codeception: https://medium.com/@docler/testing-microservices-in-php-with-codeception-94e47f22cc24
[36] Как работают статические анализаторы PHP-кода: https://www.exakat.io/from-php-code-to-static-analysis/
[37] Антипаттерны в легаси приложениях на PHP: https://adrien.poupa.fr/modernizing-a-legacy-php-application/
[38] Method fossilisation: https://www.exakat.io/en/method-fossilisation/
[39] PHP-пакеты как зависимости уровня системы: https://technex.us/2020/08/the_case_for_system_wide_dependency_injection_in_php/
[40] KPHPStorm: https://unserialize.github.io/kphpstorm/
[41] выложили код: https://github.com/vk-com/kphp-kdb
[42] github.com/unserialize/kphpstorm: https://github.com/unserialize/kphpstorm
[43] Дружественные классы в PHP: https://rmcreative.ru/blog/post/php-friendly-klassy
[44] RFC на эту тему: https://wiki.php.net/rfc/friend-classes
[45] Как создаются Highload проекты на PHP: расшифровка: https://habr.com/ru/company/ruvds/blog/514214/
[46] PHP 8: код «До» и «После» (сравнение с PHP 7.4): https://habr.com/ru/company/vdsina/blog/514512/
[47] Как я html-парсер на php писал, и что из этого вышло. Заключительная часть: https://habr.com/ru/post/505392/
[48] Запускаем php 8 с JIT через Docker за 5 минут: https://habr.com/ru/post/515216/
[49] PHP 8: Process & fixing insanity: https://www.youtube.com/watch?v=QtF2qK9QA5A
[50] George Peter Banyard: https://twitter.com/Girgias
[51] подобный доклад от Никиты Попова: https://www.youtube.com/watch?v=NbBRXwu1Md8
[52] от William Pinaud: https://www.youtube.com/watch?v=KWRv7iM1vwo
[53] Type Juggling Magic: Why PHP thinks 0 and «password» are the same: https://www.youtube.com/watch?v=-1kftH6t5VA
[54] Видеозаписи докладов Dutch PHP Conf 2020: https://www.youtube.com/playlist?list=PLV9OnTq0kQ5ygGrauB0lrIalHAupR5l8o
[55] Стрим «Примеры проектов на PHP и GO»: https://www.youtube.com/watch?v=6AhJWUTGHTo
[56] Пятиминутка PHP #82: https://5minphp.ru/episode82/
[57] Пятиминутка PHP #83: https://5minphp.ru/episode83/
[58] Подкаст Voices of the ElePHPant:: https://voicesoftheelephpant.com/2020/08/11/eighers-gonna-eight-with-sara-golemon-and-garbriel-caruso/
[59] Подкаст PHP Internals News #66: https://phpinternals.news/66
[60] использование одного токена для всего неймспейса: https://wiki.php.net/rfc/namespaced_names_as_token
[61] Подкаст PHP Internals News #65: https://phpinternals.news/65
[62] Dan Ackroyd: https://twitter.com/MrDanack
[63] www.elephpant.com: https://www.elephpant.com/
[64] автору их дизайна Vincent Pontier: https://www.jetbrains.com/lp/php-25/#e_2007_06_14
[65] shop.symfony.com: https://shop.symfony.com/collections/all
[66] личку: https://habrahabr.ru/conversations/pronskiy/
[67] почту: mailto:roman@pronskiy.com
[68] твиттер: https://twitter.com/pronskiy
[69] PHP Digest: https://t.me/phpdigest
[70] Прислать ссылку: https://bit.ly/php-digest-add-link
[71] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[72] Предыдущий выпуск: PHP-Дайджест № 185: https://habr.com/ru/post/513558/
[73] Источник: https://habr.com/ru/post/515416/?utm_source=habrahabr&utm_medium=rss&utm_campaign=515416
Нажмите здесь для печати.