{"id":314832,"date":"2020-12-14T15:01:05","date_gmt":"2020-12-14T15:01:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=314832"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=314832","title":{"rendered":"PHP-\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u2116 194 (1 \u2013 14 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2020)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><a href=\"https:\/\/habr.com\/ru\/post\/532950\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ki\/sr\/mg\/kisrmgux2ontrjqdcenl7ordszi.jpeg\"><\/div>\n<p><\/a>  <\/p>\n<p>\u0421\u0432\u0435\u0436\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b. \u0412 \u0432\u044b\u043f\u0443\u0441\u043a\u0435: Enum \u0432 PHP 8.1, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 Serializable \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 $GLOBALS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438\u0437 PHP Internals, PhpStorm 2020.3, Symfony UX, \u043f\u043e\u0440\u0446\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u0438\u0434\u0435\u043e, \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 PHP \u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0421\u0442\u0440\u0438\u043c.<\/p>\n<p>  \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f!<\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f57\/4e9\/991\/f574e9991c42407b8fa789a66b854f8d.png\" width=\"20\"> \u041d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u0440\u0435\u043b\u0438\u0437\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <strong><a href=\"https:\/\/habr.com\/ru\/company\/JetBrains\/blog\/531828\/\">PhpStorm 2020.3<\/a><\/strong>: PHP 8, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, PHPStan \u0438 Psalm, Xdebug 3, Tailwind CSS \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430.<\/li>\n<li><strong><a href=\"https:\/\/blog.jetbrains.com\/phpstorm\/2020\/12\/early-access-program-for-qodana-a-new-static-analysis-and-quality-management-tool-by-jetbrains-is-open\/\" rel=\"nofollow\">JetBrains Qodana EAP<\/a><\/strong> \u2014 \u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u043e\u0442 JetBrains \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 PhpStorm \u0432 CI.<\/li>\n<li><strong><a href=\"https:\/\/techcrunch.com\/2020\/12\/01\/salesforce-buys-slack\/\" rel=\"nofollow\">Slack \u043a\u0443\u043f\u043b\u0435\u043d \u0437\u0430 $27 \u043c\u043b\u0440\u0434<\/a><\/strong> \u2014 \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u043e \u0447\u0442\u043e \u0431\u0435\u043a\u0435\u043d\u0434 \u0421\u043b\u044d\u043a\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e <a href=\"https:\/\/slack.engineering\/taking-php-seriously\/\" rel=\"nofollow\">\u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 PHP<\/a>, \u0430 \u043f\u043e\u0437\u0436\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d <a href=\"https:\/\/slack.engineering\/hacklang-at-slack-a-better-php\/\" rel=\"nofollow\">\u043d\u0430 Hack<\/a>.<\/li>\n<li><strong><a href=\"https:\/\/wordpress.org\/news\/2020\/12\/simone\/\" rel=\"nofollow\">WordPress 5.6<\/a><\/strong> \u2014 C \u0431\u0435\u0442\u0430-\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PHP 8.<\/li>\n<li><strong><a href=\"https:\/\/blog.packagist.com\/php-versions-stats-2020-2-edition\/\" rel=\"nofollow\">\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u0439 PHP \u2013 2020.2<\/a><\/strong> \u2014 \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Composer \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a packagist.org.<br \/>   \u2022 <font color=\"#006400\">PHP 7.4<\/font>: 42.61% (+22.55)<br \/>   \u2022 <font color=\"#006400\">PHP 7.3<\/font>: 27.05% (-3.00)<br \/>   \u2022 <font color=\"#ff8c00\">PHP 7.2<\/font>: 15.28% (-12.21)<br \/>   \u2022 <font color=\"red\">PHP 7.1<\/font>: 7.45% (-4.1)<br \/>   \u2022 <font color=\"red\">PHP 5.6<\/font>: 2.71% (-2.28)<br \/>   \u2022 <font color=\"red\">PHP 7.0<\/font>: 2.70% (-1.30)   <\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c9e\/e78\/803\/c9ee7880391644e4aef6cc28ca681ab0.png\" width=\"20\"> PHP Internals<\/h3>\n<p>  <\/p>\n<ul>\n<li><strong><a href=\"https:\/\/wiki.php.net\/rfc\/deprecate_null_to_scalar_internal_arg\" rel=\"nofollow\">[RFC] Deprecate passing null to non-nullable arguments of internal functions<\/a><\/strong> \u2014 \u0412 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 PHP \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 <code>null<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u0430\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 <code>nullable<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>str_contains(&quot;&quot;, null)<\/code>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439, \u0442\u043e \u0442\u0430\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 null \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443. <\/p>\n<pre><code class=\"php\">str_contains(&quot;&quot;, null); \/\/ &gt; No errors  function _str_contains ( string $haystack , string $needle ) : bool {     return true; }  _str_contains(&quot;&quot;, null); \/\/ &gt; Fatal error: Uncaught TypeError: Argument 2 passed to _str_contains() must be of the type string, null given <\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0438 \u0432 8.1 \u0431\u0440\u043e\u0441\u0430\u0442\u044c deprecation notice.<\/p>\n<p>  \u041d\u0443 \u0430 \u043f\u043e\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>declare(strict_types=1);<\/code> \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0435\u043d\u0430. <\/li>\n<li><strong><a href=\"https:\/\/wiki.php.net\/rfc\/restrict_globals_usage\" rel=\"nofollow\">[RFC] Restrict $GLOBALS usage<\/a><\/strong> \u2014 \u0421\u0435\u0439\u0447\u0430\u0441, \u0447\u0442\u043e\u0431\u044b <code>$GLOBALS<\/code> \u0432\u0435\u043b \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f <code>INDIRECT<\/code> \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 PHP. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0432 PHP.\n<p>  \u0412 \u044d\u0442\u043e\u043c RFC \u041d\u0438\u043a\u0438\u0442\u0430 \u041f\u043e\u043f\u043e\u0432 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>$GLOBALS<\/code>.<\/p>\n<p>  \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c, isset \u0438 unset:  <\/p>\n<pre><code class=\"php\">$GLOBALS['x'] = 1;  echo $GLOBALS['x']  isset($GLOBALS['x']); unset($GLOBALS['x']);<\/code><\/pre>\n<p>  \u0418 \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0430\u043c\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e $GLOBALS \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code class=\"php\">$GLOBALS = []; $GLOBALS =&amp; $x; $x =&amp; $GLOBALS; unset($GLOBALS);<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c <code>$GLOBALS<\/code> \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e: <\/p>\n<pre><code class=\"php\">asort($GLOBALS); \/\/ &gt; Compile-time error<\/code><\/pre>\n<p>   <\/p>\n<blockquote><p>\u0417\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c <a href=\"https:\/\/www.youtube.com\/watch?v=QSszmWIrRyw&amp;t=6289\" rel=\"nofollow\">\u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0421\u0442\u043e\u0433\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0438\u043c\u0435<\/a> \u043e\u0442\u0432\u0435\u0447\u0430\u044f \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u0447\u0442\u043e \u0441\u0442\u043e\u0438\u043b\u043e \u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 PHP\u00bb.<\/p><\/blockquote>\n<\/li>\n<li><strong><a href=\"https:\/\/wiki.php.net\/rfc\/phase_out_serializable\" rel=\"nofollow\">[RFC] Phasing out Serializable<\/a><\/strong> \u2014 \u0412 7.4 \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0435\u043d <a href=\"https:\/\/wiki.php.net\/rfc\/custom_object_serialization\" rel=\"nofollow\">\u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a>: \u043d\u0430\u0440\u044f\u0434\u0443 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c <code>Serialiazable<\/code> \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b <code>__serialize()<\/code> \u0438 <code>__unserialize()<\/code>.\n<p>  \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 <code>Serializable<\/code>. \u0412 PHP 8.1 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c deprecation notice, \u0430 \u0432 PHP 9.0 \u2014 compile-time error.<\/li>\n<li><strong><a href=\"https:\/\/wiki.php.net\/rfc\/enumerations\" rel=\"nofollow\">[RFC] Enumerations<\/a><\/strong> \u2014 Ilija Tovilo \u0438 Larry Garfield \u043f\u0440\u043e\u0432\u0435\u043b\u0438 <a href=\"https:\/\/github.com\/Crell\/enum-comparison\" rel=\"nofollow\">\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f enum \u0432\u043e \u0432\u0441\u0435\u0445 \u044f\u0437\u044b\u043a\u0430\u0445<\/a> \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 RFC, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d Swift, Rust, \u0438 Kotlin.\n<p>  Enum \u044d\u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043a\u043b\u0430\u0441\u0441, \u0430 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e, \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043a\u0430\u043a \u0431\u044b \u0432\u0435\u043b\u0438 \u0441\u0435\u0431\u044f Enums \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 X\u00bb \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u00ab\u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u00bb. \u041d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 <code>enum<\/code> \u0438 <code>case<\/code>:<\/p>\n<pre><code class=\"php\">enum Suit {   case Hearts;   case Diamonds;   case Clubs;   case Spades; }<\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:<\/p>\n<pre><code class=\"php\">$val = Suit::Diamonds;  function pick_a_card(Suit $suit) { ... }  pick_a_card($val);        \/\/ OK pick_a_card(Suit::Clubs); \/\/ OK pick_a_card('Spades');    \/\/ TypeError<\/code><\/pre>\n<p>  Enum \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0441\u0438\u043d\u0433\u043b\u0442\u043e\u043d-\u043e\u0431\u044a\u0435\u043a\u0442\u044b:<\/p>\n<pre><code class=\"php\">$a = Suit::Spades; $b = Suit::Spades;  $a === $b; \/\/ true  $a instanceof Suit;         \/\/ true $a instanceof Suit::Spades; \/\/ true<\/code><\/pre>\n<p>  \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 Enum. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u0433\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"php\">enum Suit: string {   case Hearts = 'H';   case Diamonds = 'D';   case Clubs = 'C';   case Spades = 'S'; }  echo &quot;I hope I draw a &quot; . Suit::Spades; \/\/ prints &quot;I hope I draw a S&quot;.<\/code><\/pre>\n<p>  Enum \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u043f\u0446\u0438\u0439 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430:<\/p>\n<pre><code class=\"php\">enum UserStatus: string {   case Pending = 'pending';   case Active = 'active';   case Suspended = 'suspended';   case CanceledByUser = 'canceled';    public function label(): string {     return match($this) {       UserStatus::Pending =&gt; 'Pending',       UserStatus::Active =&gt; 'Active',       UserStatus::Suspended =&gt; 'Suspended',       UserStatus::CanceledByUser =&gt; 'Canceled by user',     };   } }  foreach (UserStatus::cases() as $key =&gt; $val) {   printf('&lt;option value=&quot;%s&quot;&gt;%s&lt;\/option&gt;\\n', $key, $val-&gt;label()); }<\/code><\/pre>\n<p>  \u0418\u0437 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u043e\u043a\u0430 \u0435\u0449\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f:<br \/>   \u2022 \u041c\u043e\u0433\u0443\u0442 \u043b\u0438 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f case?<br \/>   \u2022 \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0430\u0439\u043f\u0445\u0438\u043d\u0442\u0430? <code>function stuff(Suit::Heart|Suit:Diamond $card) { ... } <\/code><br \/>   \u2022 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u043b\u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Enum?<br \/>   \u2022 \u0414\u043e\u043b\u0436\u043d\u043e \u043b\u0438 \u0441\u043b\u043e\u0432\u043e <code>enum<\/code> \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c? \u0422\u043e\u0433\u0434\u0430 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 <code>Enum<\/code>. \u0418\u043b\u0438 \u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0432\u043e\u0442 \u0442\u0430\u043a: <code>enum class UserStatus {...} <\/code>  <\/li>\n<li><strong><a href=\"https:\/\/wiki.php.net\/rfc\/adts\" rel=\"nofollow\">[RFC] Algebraic Data Types<\/a><\/strong> \u2014 \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e Enum \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u0435\u0431\u0440\u0430\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 PHP. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 *\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445* \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0448\u0430\u0433\u043e\u0432 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f <a href=\"https:\/\/wiki.php.net\/rfc\/tagged_unions\" rel=\"nofollow\">tagged unions<\/a> \u0438 <a href=\"https:\/\/wiki.php.net\/rfc\/pattern-matching\" rel=\"nofollow\">pattern matching<\/a>.<\/li>\n<li><strong><a href=\"https:\/\/wiki.php.net\/rfc\/direct-execution-opcode\" rel=\"nofollow\">[RFC] Direct execution opcode file without php source code file<\/a><\/strong> \u2014 \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u043f\u043a\u0435\u0448\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0443\u0436\u0435 \u0431\u0435\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430. \u041f\u043e \u0441\u0443\u0442\u0438, \u0447\u0442\u043e-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b <code>.pyc \/ .pyo<\/code>.\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u043e\u043f\u043a\u043e\u0434\u0430 \u0432 PHP \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d \u0438 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a \u0432\u0435\u0440\u0441\u0438\u0438. \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0444\u0430\u0439\u043b \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u0435\u0442\u043a\u043e\u0439 <code>&lt;?phpo%php_version_id%<\/code>.<\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>include()<\/code>, <code>include_once()<\/code>, <code>require()<\/code>, <code>require_once()<\/code>.<\/li>\n<li><strong><a href=\"https:\/\/wiki.php.net\/rfc\/max_execution_wall_time\" rel=\"nofollow\">[RFC] Wall-Clock Time Based Execution Timeout<\/a><\/strong> \u2014 PHP \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0432 sleep() \u0438\u043b\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 ini-\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 <code>max_execution_time<\/code>.\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c RFC \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 <code>max_execution_wall_time<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cf8\/62d\/907\/cf862d9072784d04b621238ec137f2ca.png\" width=\"20\"> \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/itsgoingd\/clockwork\" rel=\"nofollow\">itsgoingd\/clockwork v5.0<\/a> \u2014 \u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Chrome, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0432 dev tools \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 PHP-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432 <img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/webt\/qz\/or\/43\/qzor43-o-hxqow_k8lsqlmniblm.png\" width=\"14\"> <a href=\"https:\/\/www.youtube.com\/watch?v=I-gUoz-Meio\" rel=\"nofollow\">\u041f\u044f\u0442\u0438\u043c\u0438\u043d\u0443\u0442\u043a\u0435 PHP<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/nicofff\/LazyIter\" rel=\"nofollow\">nicofff\/LazyIter<\/a> \u2014 \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0446\u0435\u043f\u043e\u0447\u0435\u043a \u0432\u044b\u0437\u043e\u0432\u043e\u0432. \u0412\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438\u0437 Rust. <a href=\"https:\/\/nicolasfar.medium.com\/on-strong-type-checking-in-php-and-the-opportunities-it-presents-today-4eb0f7ffea8c\" rel=\"nofollow\">\u041f\u043e\u0441\u0442 \u043f\u0440\u043e \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044e<\/a> \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.<\/li>\n<li><a href=\"https:\/\/github.com\/veewee\/composer-run-parallel\" rel=\"nofollow\">veewee\/composer-run-parallel<\/a> \u2014 \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u0441\u0435\u043a\u0446\u0438\u0438 \u00abscripts\u00bb \u0432 composer.json.<\/li>\n<li><a href=\"https:\/\/github.com\/clue\/phar-composer\" rel=\"nofollow\">clue\/phar-composer<\/a> \u2014 \u0411\u0435\u0440\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 composer.json \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 phar \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438.<\/li>\n<li><a href=\"https:\/\/github.com\/clue\/commander\" rel=\"nofollow\">clue\/commander<\/a> \u2014 \u0414\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434.<\/li>\n<li><a href=\"https:\/\/github.com\/quasilyte\/phpgrep\" rel=\"nofollow\">quasilyte\/phpgrep 1.0<\/a> \u2014 \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e PHP-\u043a\u043e\u0434\u0443 \u2013 \u043a\u0430\u043a grep, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u00ab\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c\u00bb \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 PHP.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/96b\/65e\/921\/96b65e92179a40f2bd1884549973ddd5.png\" width=\"16\"> Symfony<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/symfony.com\/blog\/new-in-symfony-the-ux-initiative-a-new-javascript-ecosystem-for-symfony?utm_medium=feed\" rel=\"nofollow\">Symfony UX<\/a> \u2014 \u041d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 Symfony \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e npm, Webpack Encore \u0438 <a href=\"https:\/\/stimulusjs.org\/\" rel=\"nofollow\">Stimulus js<\/a>. \u041f\u043e \u0441\u0443\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f PHP+JS \u0432\u0438\u0434\u0436\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 Composer: <a href=\"https:\/\/github.com\/symfony\/ux\" rel=\"nofollow\">symfony\/ux<\/a>.<\/li>\n<li><a href=\"https:\/\/symfony.com\/blog\/a-week-of-symfony-728-7-13-december-2020?utm_medium=feed\" rel=\"nofollow\">\u041d\u0435\u0434\u0435\u043b\u044f Symfony #728 (7-13 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2020)<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/swlh\/implementing-action-domain-responder-pattern-with-symfony-606539eea3a7\" rel=\"nofollow\">\u0414\u0435\u043b\u0430\u0435\u043c Action-Domain-Responder \u043d\u0430 Symfony<\/a><\/li>\n<li><a href=\"https:\/\/minompi.medium.com\/symfony-and-hexagonal-architecture-b3c4704e94de\" rel=\"nofollow\">Symfony \u0438 \u0433\u0435\u043a\u0441\u0430\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/a><\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/webt\/qz\/or\/43\/qzor43-o-hxqow_k8lsqlmniblm.png\" width=\"14\"> <a href=\"https:\/\/www.youtube.com\/watch?v=oFddUtFNkCs&amp;list=PLQH1-k79HB39w7dmGtLj4JGJ7HoucbcMx&amp;index=4\" rel=\"nofollow\">Symfony Workshop 2020<\/a> \u2014 \u041f\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043a\u0443\u0440\u0441 \u043f\u043e Symfony.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/314\/bd0\/f0d\/314bd0f0dfc54e3fa7f0c0daef1a2d25.png\" width=\"16\"> Laravel<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/laravel\/sail\" rel=\"nofollow\">\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d Laravel Sail<\/a> \u2014 CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Laravel-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Docker.<\/li>\n<li><a href=\"https:\/\/github.com\/tailflow\/laravel-orion\" rel=\"nofollow\">tailflow\/laravel-orion 1.0<\/a> \u2014 \u041f\u0430\u043a\u0435\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f REST API \u043f\u043e Eloquent-\u043c\u043e\u0434\u0435\u043b\u044f\u043c \u0438 \u0438\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u043c.<\/li>\n<li><a href=\"https:\/\/github.com\/asantibanez\/laravel-eloquent-state-machines\" rel=\"nofollow\">asantibanez\/laravel-eloquent-state-machines<\/a> \u2014 \u041c\u0430\u0448\u0438\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 (\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442) \u0434\u043b\u044f Eloquent \u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u041f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c.<\/li>\n<li><a href=\"https:\/\/github.com\/lukeraymonddowning\/honey\" rel=\"nofollow\">lukeraymonddowning\/honey<\/a> \u2014 \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442-\u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043f\u0430\u043c\u0430.<\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <a href=\"https:\/\/habr.com\/ru\/post\/531936\/\">\u041a\u0430\u043a \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c October CMS \u0434\u043e Laravel 6?<\/a><\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/webt\/qz\/or\/43\/qzor43-o-hxqow_k8lsqlmniblm.png\" width=\"14\"> <a href=\"https:\/\/www.youtube.com\/watch?v=ixI2R3W76N8\" rel=\"nofollow\">\u0421\u0442\u0440\u0438\u043c Laravel Internals #2<\/a> \u2014 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Laravel.<\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/webt\/qz\/or\/43\/qzor43-o-hxqow_k8lsqlmniblm.png\" width=\"14\"> <a href=\"https:\/\/www.youtube.com\/watch?v=MZ0ZeWNJyhY\" rel=\"nofollow\">Laravel at Scale: Framework, Community &amp; Ecosystem<\/a> \u2014 \u0418\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 \u0422\u0435\u0439\u043b\u043e\u0440\u043e\u043c.<\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <a href=\"https:\/\/habr.com\/ru\/post\/532754\/\">Laravel\u2013\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 (6\u201313 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2020)<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/569\/de4\/298\/569de4298b764a33894aa517e74324f9.png\" width=\"16\"> Yii<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.yiiframework.com\/news\/318\/yii-1-1-23-is-released\" rel=\"nofollow\">Yii 1.1.23<\/a> \u2014 C \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PHP 8.<\/li>\n<li><a href=\"https:\/\/github.com\/yiisoft\/cookies\" rel=\"nofollow\">yiisoft\/cookies<\/a> \u2014 \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Yii 3. \u041f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u0443\u043a\u0438-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u0441\u0440\u0435\u0434\u0435 PSR-7.<\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <a href=\"https:\/\/habr.com\/ru\/post\/531186\/\">SOLID \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u0438-\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u0438 \u0438 ActiveQuery Yii2<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/73\/2r\/pq\/732rpqll-yvu0hrtaw6yeism-de.png\" width=\"20\"> Async PHP<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/clue\/reactphp-zenity\" rel=\"nofollow\">clue\/reactphp-zenity<\/a> \u2014 \u041e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 Zenity \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 PHP. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043d\u0430 Ubuntu.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/329\/bec\/7c1\/329bec7c1e914963a1c5d2f2bfe99995.png\" width=\"20\"> \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/calendar.perfplanet.com\/2020\/profiling-php-in-production-at-scale\/\" rel=\"nofollow\">\u041f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 PHP-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d\u0435<\/a> \u2014 \u041f\u043e\u0441\u0442 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Wikipedia, \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0432\u0430 \u0441\u0432\u043e\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430: <a href=\"https:\/\/github.com\/wikimedia\/php-excimer\/\" rel=\"nofollow\">wikimedia\/php-excimer<\/a> \u2013 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 \u0438 <a href=\"https:\/\/github.com\/wikimedia\/arc-lamp\/\" rel=\"nofollow\">wikimedia\/arc-lamp<\/a> \u2013 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0442\u0440\u0435\u0439\u0441\u043e\u0432 \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0444\u043b\u0435\u0439\u043c-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432.<br \/>\n<blockquote><p>We ingest about 3 million samples daily from a cluster of 150 Apache servers in any given data centre, using a 60s sample interval. These are all received by a single Redis instance.<\/p><\/blockquote>\n<\/li>\n<li><a href=\"https:\/\/mnapoli.fr\/aws-lambda-php-docker-containers\/\" rel=\"nofollow\">AWS Lambda \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c PHP, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b Docker<\/a><\/li>\n<li><a href=\"https:\/\/freek.dev\/1853-moving-php-and-laravel-tests-from-travis-ci-to-github-actions\" rel=\"nofollow\">\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0431\u0438\u043b\u0434\u044b \u0441 Travis CI \u043d\u0430 GitHub Actions<\/a> \u2014 \u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e Travis CI \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0446\u0435\u043d\u043e\u0432\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u0430.<\/li>\n<li><a href=\"https:\/\/php.watch\/articles\/jit-in-depth\" rel=\"nofollow\">php.watch: \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043e JIT \u0432 PHP 8<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Nyholm\/next-faker\" rel=\"nofollow\">\u041a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c Faker 2.0<\/a> \u2014 \u0410\u0432\u0442\u043e\u0440 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Faker <a href=\"https:\/\/habr.com\/ru\/post\/526098\/#:~:text=%D0%97%D0%B0%D0%BA%D0%B0%D1%82%20PHP%20Faker\">\u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u043d\u0435\u0439<\/a> \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/fakerphp\/Faker\" rel=\"nofollow\">\u0444\u043e\u0440\u043a<\/a>. \u041d\u0430 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Faker.<\/li>\n<li><a href=\"https:\/\/www.zend.com\/sites\/zend\/files\/pdfs\/whitepaper-zend-php-extensions.pdf\" rel=\"nofollow\">\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f PHP \u043e\u0442 Zend<\/a><\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <a href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/531676\/\">\u041d\u0415\u043a\u043e\u0441\u0442\u044b\u043b\u044c: gRPC-\u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 PHP \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435<\/a><\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <a href=\"https:\/\/habr.com\/ru\/post\/532432\/\">\u0421\u0440\u0430\u0432\u043d\u0438\u043c C++, JS, Python, Python + numba, PHP7, PHP8, \u0438 Golang \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u201c\u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0427\u0438\u0441\u043b\u043e\u201d<\/a><\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <a href=\"https:\/\/habr.com\/ru\/post\/531790\/\">\u041f\u0440\u043e\u0441\u0442\u043e\u0439 Telegram \u0431\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0451\u0442 1 \u0432\u043e\u043f\u0440\u043e\u0441<\/a><\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/webt\/-u\/wa\/el\/-uwael5b7b4s2zu-db-7p8iytxg.png\" width=\"12\"> <a href=\"https:\/\/habr.com\/ru\/post\/531250\/\">\u0423\u043b\u0443\u0447\u0448\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443: \u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u0438 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f<\/a><\/li>\n<li><img decoding=\"async\" alt=\"ru\" src=\"https:\/\/habrastorage.org\/webt\/v2\/r1\/ak\/v2r1ake6qijxftbralm4knou9ck.png\" width=\"12\"> <a href=\"https:\/\/yupe.ru\/post\/masshtabirovanie-mysql-v-slack-s-pomoshchyu-vitess.html\" rel=\"nofollow\">\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 MySQL \u0432 Slack \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Vitess<\/a><\/li>\n<li><img decoding=\"async\" alt=\"dollar\" src=\"https:\/\/habrastorage.org\/webt\/4t\/et\/wh\/4tetwhxah33phmbaxg_uedchpio.png\" width=\"12\"> <a href=\"https:\/\/leanpub.com\/php-for-web-ru\" rel=\"nofollow\">\u041a\u043d\u0438\u0433\u0430 \u00abPHP \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb \u043e\u0442 Matthias Noback<\/a> \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c. \u2014 \u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a\u043d\u0438\u0433\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b <a href=\"https:\/\/habr.com\/ru\/users\/lex111\/\" class=\"user_link\">lex111<\/a>, \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 PHP.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8dc\/c23\/677\/8dcc236774104f8286a40ceaea553820.png\" width=\"20\"> \u0410\u0443\u0434\u0438\u043e\/\u0412\u0438\u0434\u0435\u043e<\/h3>\n<p>  <\/p>\n<ul>\n<li><img decoding=\"async\" alt=\"noob\" src=\"https:\/\/habrastorage.org\/files\/f2c\/2ff\/394\/f2c2ff394e8d4ba9b64810e82f57e528.png\" width=\"12\"> <a href=\"https:\/\/www.youtube.com\/watch?v=2eebptXfEvw\" rel=\"nofollow\">\u0412\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e PHP \u043d\u0430 6.5 \u0447\u0430\u0441\u043e\u0432 \u0434\u043b\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432<\/a><\/li>\n<li><img decoding=\"async\" alt=\"noob\" src=\"https:\/\/habrastorage.org\/files\/f2c\/2ff\/394\/f2c2ff394e8d4ba9b64810e82f57e528.png\" width=\"12\"> <a href=\"https:\/\/www.youtube.com\/watch?v=sVbEyFZKgqk&amp;list=PLr3d3QYzkw2xabQRUpcZ_IBk9W50M9pe-\" rel=\"nofollow\">Intro to PHP | Learn PHP The Right Way<\/a> \u2014 \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432.<\/li>\n<li><img decoding=\"async\" alt=\"noob\" src=\"https:\/\/habrastorage.org\/files\/f2c\/2ff\/394\/f2c2ff394e8d4ba9b64810e82f57e528.png\" width=\"12\"> <a href=\"https:\/\/www.youtube.com\/watch?v=ncibYs9zAx8&amp;list=PLQH1-k79HB3_LMrc9ytoOirBLaRlkM5Bi\" rel=\"nofollow\">\u0412\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u041e\u041e\u041f \u0432 PHP \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432<\/a><\/li>\n<li><img decoding=\"async\" alt=\"noob\" src=\"https:\/\/habrastorage.org\/files\/f2c\/2ff\/394\/f2c2ff394e8d4ba9b64810e82f57e528.png\" width=\"12\"><img decoding=\"async\" alt=\"ru\" src=\"https:\/\/habrastorage.org\/webt\/v2\/r1\/ak\/v2r1ake6qijxftbralm4knou9ck.png\" width=\"12\"> <a href=\"https:\/\/www.youtube.com\/watch?v=TkZkCmKlvq0&amp;list=PLIUUp_4cT9KZ2BaKOOxaOQFSVc9dsr8dM\" rel=\"nofollow\"> \u041f\u0438\u0448\u0435\u043c \u0411\u043b\u043e\u0433 \u043d\u0430 PHP<\/a> \u2014 \u0418 \u0435\u0449\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432.<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=uU1-ZqIbYes\" rel=\"nofollow\">\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 PHP 8.0<\/a> \u2014 \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043d\u043e\u0432\u0438\u043d\u043e\u043a \u0432 PHP.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cc2\/4d9\/c95\/cc24d9c95c9841988f8299a8b285e6f6.png\" width=\"20\"> \u0417\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435<\/h3>\n<p>  <\/p>\n<ul>\n<li>\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043f\u0440\u043e\u0434\u0430\u0436\u0435 \u043d\u043e\u0432\u044b\u0439 <a href=\"https:\/\/shop.symfony.com\/products\/collector-15y-o-small-symfony-elephpant-grey-color\" rel=\"nofollow\">\u0441\u043b\u043e\u043d\u0438\u043a \u0432 \u0447\u0435\u0441\u0442\u044c 15-\u043b\u0435\u0442\u0438\u044f Symfony<\/a><br \/>   <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/351\/991\/f2b\/351991f2b7bf778849f0657f872b5797.jpg\" width=\"400\">   <\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"oembed\"><iframe id=\"5fd74832017bf613f0899e31\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/5fd74832017bf613f0899e31\"><\/iframe><\/div>\n<p>   \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0434\u0443 \u0441\u0442\u0440\u0438\u043c \u043f\u043e PHP \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0443. \u0412\u0441\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 + \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u0442\u0430\u043b\u0435\u0439, \u043e\u0431\u0437\u043e\u0440 \u043f\u0440\u0438\u0441\u043b\u0430\u043d\u043d\u043e\u0433\u043e, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u043e \u043d\u0435 \u0432\u043e\u0448\u0435\u0434\u0448\u0435\u0435 \u0432 \u0432\u044b\u043f\u0443\u0441\u043a, \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0441 \u0441\u043e \u0441\u043b\u043e\u043d\u0438\u043a\u0430\u043c\u0438.<br \/>   \u041d\u0430\u0447\u0430\u043b\u043e \u0432 20:00 \u041c\u043e\u0441\u043a\u0432\u0430, \u041c\u0438\u043d\u0441\u043a \/ 19:00 \u041a\u0438\u0435\u0432.<\/p>\n<hr>\n<p>  <\/p>\n<p> \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438\u043b\u0438 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u2014 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432 <a href=\"https:\/\/habrahabr.ru\/conversations\/pronskiy\/\" rel=\"nofollow\">\u043b\u0438\u0447\u043a\u0443 \u0445\u0430\u0431\u0440\u0430<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/t.me\/pronskiy\" rel=\"nofollow\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c<\/a>.  <\/p>\n<blockquote><p> \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0432 Telegram-\u043a\u0430\u043d\u0430\u043b\u0435 <strong><a href=\"https:\/\/t.me\/phpdigest\" rel=\"nofollow\">PHP Digest<\/a><\/strong>.   <\/p><\/blockquote>\n<p>   <a href=\"https:\/\/bit.ly\/php-digest-add-link\" rel=\"nofollow\">\u041f\u0440\u0438\u0441\u043b\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443<\/a><br \/>   <a href=\"https:\/\/pronskiy.com\/php-digest\/\" rel=\"nofollow\">\u041f\u043e\u0438\u0441\u043a \u0441\u0441\u044b\u043b\u043e\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0430\u043c<\/a><br \/>   \u2190 <a href=\"https:\/\/habr.com\/ru\/post\/530562\/\">\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0432\u044b\u043f\u0443\u0441\u043a: PHP-\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u2116 193<\/a><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/532950\/\"> https:\/\/habr.com\/ru\/post\/532950\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><a href=\"https:\/\/habr.com\/ru\/post\/532950\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ki\/sr\/mg\/kisrmgux2ontrjqdcenl7ordszi.jpeg\"><\/div>\n<p><\/a>  <\/p>\n<p>\u0421\u0432\u0435\u0436\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b. \u0412 \u0432\u044b\u043f\u0443\u0441\u043a\u0435: Enum \u0432 PHP 8.1, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 Serializable \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 $GLOBALS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438\u0437 PHP Internals, PhpStorm 2020.3, Symfony UX, \u043f\u043e\u0440\u0446\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u0438\u0434\u0435\u043e, \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 PHP \u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0421\u0442\u0440\u0438\u043c.<\/p>\n<p>  \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f!<\/p>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-314832","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=314832"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314832\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}