{"id":138722,"date":"2021-04-27T12:27:50","date_gmt":"2021-04-27T11:27:50","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=phpstorm&#038;p=138722"},"modified":"2021-04-27T12:50:58","modified_gmt":"2021-04-27T11:50:58","slug":"phpstorm-2021-1-release","status":"publish","type":"phpstorm","link":"https:\/\/blog.jetbrains.com\/ru\/phpstorm\/2021\/04\/phpstorm-2021-1-release\/","title":{"rendered":"PhpStorm 2021.1: \u043f\u0440\u0435\u0432\u044c\u044e PHP- \u0438 HTML-\u0444\u0430\u0439\u043b\u043e\u0432, 20+ \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0439 \u0438 \u043f\u0430\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 Code With Me"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/PS_2021-1_BlogImagePhpStorm-2x.png\" alt=\"\" \/><\/p>\n<p>\u0420\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 PhpStorm \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443! \u041d\u0438\u0436\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p><cut \/><\/p>\n<h2 id=\"php\">PHP<\/h2>\n<ul>\n<li>\n        \u041f\u0440\u0435\u0432\u044c\u044e PHP- \u0438 HTML-\u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0440\u044f\u043c\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 PHP.\n    <\/li>\n<li>\n        \u0411\u043e\u043b\u0435\u0435 20 \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0439 \u0434\u043b\u044f PHP.\n    <\/li>\n<li>\n        \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a PHP, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u2014 \u0432 Settings \/ Preferences.\n    <\/li>\n<li>\n        \u0412\u0435\u0440\u0441\u0438\u044f PHP \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0432\u044f\u0437\u0430\u043d\u0430 \u043e\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 composer.json.\n    <\/li>\n<li>\n        \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 SQL, RegExp \u0438 \u0442. \u043f. \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.\n    <\/li>\n<li>\n        \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043c\u0435\u043d \u0442\u0430\u0431\u043b\u0438\u0446 \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430\u043c\u0438 \u0432 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 CMS.\n    <\/li>\n<li>\n        \u0421\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043a\u043e\u0443\u043f \u0432 \u0446\u0438\u043a\u043b\u0430\u0445 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u0432.\n    <\/li>\n<\/ul>\n<h2 id=\"ide\">IDE<\/h2>\n<ul>\n<li>\n        \u0420\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Split \u043f\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u043c\u0443 \u043a\u043b\u0438\u043a\u0443 \u043f\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435.\n    <\/li>\n<li>\n        \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 JSONPath \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c JSON-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c.\n    <\/li>\n<li>\n        \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 JSON Lines.\n    <\/li>\n<li>\n        \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432 <em>Preferences | Editor | Font<\/em>.\n    <\/li>\n<\/ul>\n<h2 id=\"docker\">Docker<\/h2>\n<ul>\n<li>\n        \u0410\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 Dockerfile.\n    <\/li>\n<li>\n        \u0421\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Dockerfile.\n    <\/li>\n<\/ul>\n<h2 id=\"version_control\">Version Control<\/h2>\n<ul>\n<li>\n        \u041c\u044b \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432 GitHub \u2014 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0445 \u0438\u0437 IDE \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0449\u0435.\n    <\/li>\n<\/ul>\n<h2 id=\"code_with_me\">Code With Me<\/h2>\n<ul>\n<li>\n        \u041d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 JetBrains \u0434\u043b\u044f \u043f\u0430\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 PhpStorm \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. Code With Me \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0430\u0443\u0434\u0438\u043e- \u0438 \u0432\u0438\u0434\u0435\u043e\u0437\u0432\u043e\u043d\u043a\u0438 \u0438 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440.\n    <\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.jetbrains.com\/ru-ru\/phpstorm\/whatsnew\/\" target=\"_blank\" rel=\"noopener\">\u0421\u043a\u0430\u0447\u0430\u0442\u044c PhpStorm 2021.1<\/a> \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0438\u043b\u0438 \u0432 <a href=\"https:\/\/www.jetbrains.com\/ru-ru\/toolbox-app\/\" target=\"_blank\" rel=\"noopener\">Toolbox App<\/a>.<\/p>\n<p>\u042d\u0442\u043e \u0432\u043a\u0440\u0430\u0442\u0446\u0435, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431\u043e \u0432\u0441\u0435\u043c.<\/p>\n<h1 id=\"php\">PHP<\/h1>\n<h3 id=\"set_the_php_language_level_in_the_status_bar\">\u0412\u044b\u0431\u043e\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 PHP \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u0442\u0443\u0441\u0431\u0430\u0440<\/h3>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u0435\u0440\u0441\u0438\u0438 PHP \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0412 2021.1 \u0432\u0435\u0440\u0441\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 <code>composer.json<\/code>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 PHP.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/language_level_unsync.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043b\u0435\u0433\u043a\u0438\u0439_\u043f\u043e\u0438\u0441\u043a_\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a_php\">\u041b\u0435\u0433\u043a\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a PHP<\/h3>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 PHP, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 <em>Settings \/ Preferences | PHP<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/php_settings_top_level.png\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440_php_\u0438_html_\u0444\u0430\u0439\u043b\u043e\u0432_\u0432_\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435\">\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 PHP- \u0438 HTML-\u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435<\/h3>\n<p>\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435  \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0441 \u0438\u043a\u043e\u043d\u043a\u0430\u043c\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. \u041f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043d\u0430 \u0438\u043a\u043e\u043d\u043a\u0443 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u043a\u043e\u043d\u043a\u0430 PhpStorm. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043d\u0435\u0435 \u0444\u0430\u0439\u043b \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435.<\/p>\n<p>\u041f\u0440\u0435\u0432\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 HTML- \u0438 PHP-\u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 CSS- \u0438 JavaScript-\u0444\u0430\u0439\u043b\u0430\u043c\u0438.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/php-html_preview_in_editor.gif\" alt=\"\" width=\"810\" \/><\/p>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0438 \u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u2014 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>PhpStorm \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <strong>\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 PHP,<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 <em>Settings\/Preferences | PHP<\/em>. Docker \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0435\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043a\u043e\u043d\u043e\u043a \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043d\u0435\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>Preferences | Tools | Web Browsers <\/em>\u0432\u044b\u0431\u0440\u0430\u043d \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u0447\u0435\u043a\u0431\u043e\u043a\u0441 <em>For HTML files<\/em>.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u043f\u0440\u0435\u0432\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439 <kbd>Alt+F2<\/kbd>.<\/p>\n<h3 id=\"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435_\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430_\u0442\u0430\u0431\u043b\u0438\u0446_\u0432_sql_\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445<\/h3>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 CMS \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u0440\u044f\u043b\u0430\u0441\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0411\u0414, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/www.jetbrains.com\/help\/phpstorm\/ide-advanced-metadata.html\" target=\"_blank\" rel=\"noopener\">.phpstorm.meta.php<\/a>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043c\u0435\u0442\u0430\u0444\u0430\u0439\u043b\u0430\u0445 \u0438 \u043e \u0442\u043e\u043c, <strong>\u043a\u0430\u043a \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u0442\u0430\u0431\u043b\u0438\u0446<\/strong>, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 <a href=\"https:\/\/www.jetbrains.com\/help\/phpstorm\/2021.1\/ide-advanced-metadata.html#legacy-metadata-format-deprecated\" target=\"_blank\" rel=\"noopener\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0445\u0435\u043b\u043f\u0430<\/a>.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 Drupal:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/03\/drupal_db_with_prefix_query.png\" alt=\"\" width=\"600\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/03\/drupal_db_with_prefix_settings.png\" alt=\"\" width=\"600\" \/><\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, PhpStorm \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u044c \u043d\u0438 \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043d\u0438 \u0438\u043c\u0435\u043d\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Drupal.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0444\u0430\u0439\u043b <code>.phpstorm.meta.php<\/code> \u0441 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<p><source lang=\"php\">namespace PHPSTORM_META {<br \/>\noverride(<br \/>\n\/\/ \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0437\u0430\u043c\u0435\u043d \u0432 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445<br \/>\nsql_injection<em>subst(),<br \/>\nmap([<br \/>\n&#8216;{&#8216; =&gt; &quot;PS2021<\/em>&quot;, \/\/ \u0432\u0441\u0435 <code>{<\/code> \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 SQL \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441<br \/>\n&#8216;}&#8217; =&gt; &#8221;,       \/\/ \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b <code>}<\/code> \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439<br \/>\n]));<br \/>\n}<\/source><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c PhpStorm \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u043c \u0442\u0430\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/drupal_db_with_meta_full.gif\" alt=\"\" width=\"624\" \/><\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044e, \u0442\u043e \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<p><source lang=\"php\">&lt;?php<br \/>\nconst DB<em>PREFIX = &quot;mydatabase<\/em>&quot;;<br \/>\n$sql = &quot;SELECT * FROM &quot; . DB_PREFIX . &#8216;table_name&#8217;;<\/source><\/p>\n<h2 id=\"\u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0438_\u0438_\u043a\u0432\u0438\u043a_\u0444\u0438\u043a\u0441\u044b\">\u0418\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0438 \u0438 \u043a\u0432\u0438\u043a-\u0444\u0438\u043a\u0441\u044b<\/h2>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 20 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 \u043a\u0432\u0438\u043a-\u0444\u0438\u043a\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0440\u0430\u043d\u043d\u0438\u0445 \u0441\u0442\u0430\u0434\u0438\u044f\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432 <em>Settings \/ Preferences | Editor | Inspections<\/em>.<\/p>\n<p>\u041f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043d\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430 \u043d\u0435\u0435 \u043a\u0443\u0440\u0441\u043e\u0440, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 <kbd>Alt+Enter<\/kbd> \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0444\u0438\u043a\u0441.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u044f\u0445.<\/p>\n<h3 id=\"\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435_\u0431\u043b\u043e\u043a\u043e\u0432_if_\u0441_\u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438_\u0442\u0435\u043b\u0430\u043c\u0438\">\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 <code>if<\/code> \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0442\u0435\u043b\u0430\u043c\u0438<\/h3>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 <code>if<\/code> \u0438 <code>else<\/code> \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u0438\u0445 \u0442\u0435\u043b\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438.<\/p>\n<p>PhpStorm \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u0442\u0430\u043a\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0438\u0445 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/02\/inspections_if_simplify.gif\" alt=\"\" width=\"600\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/02\/inspections_if_merge.gif\" alt=\"\" width=\"600\" \/><\/p>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c, \u0435\u0441\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0442\u0435\u043b\u0430, PhpStorm \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0435:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_if_exctract_common_parts.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u0438\u043d\u0432\u0435\u0440\u0441\u0438\u044f_if\">\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f <code>if<\/code><\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c <kbd>Alt+Enter<\/kbd> \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e <code>if<\/code>, \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <em>\u201cInvert <code>if<\/code> statement\u201d<\/em>. \u041e\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0435 \u0438 \u0432\u043d\u043e\u0441\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <strong>\u0440\u0430\u043d\u043d\u0438\u0439 return<\/strong>, \u0442\u043e \u044d\u0442\u0430 \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0430\u043c \u043f\u0440\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<p><a href=\"https:\/\/szymonkrajewski.pl\/why-should-you-return-early\/#two-approaches-to-check-requirements\" target=\"_blank\" rel=\"noopener\">\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/a>:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/02\/invert_if_statement.gif\" alt=\"\" width=\"624\" \/><\/p>\n<p>\u0412 \u0446\u0438\u043a\u043b\u0430\u0445 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/invert_if_statement_loop.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u0437\u0430\u043c\u0435\u043d\u0430_isset_\u043d\u0430\">\u0417\u0430\u043c\u0435\u043d\u0430 <code>isset<\/code> \u043d\u0430 ??<\/h3>\n<p>\u041a\u043e\u0434 <code>isset($a) ? $a : $b;<\/code> \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d <code>$a ?? $b<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 PhpStorm \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442 \u0435\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u043a\u0432\u0438\u043a-\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_replace_isset_coalsce.gif\" alt=\"\" width=\"600\" \/><\/p>\n<blockquote><p>\n\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014\u00a0\u0442\u0430\u043a \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0437\u0443 \u0432\u0435\u0437\u0434\u0435, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e <em>Code | Run Inspection by Name&#8230;<\/em> \u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0443\u044e \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em><code>isset<\/code> can be replaced with coalesce<\/em>. \u0412\u0441\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u043f\u043e\u0438\u0441\u043a\u0430.\n<\/p><\/blockquote>\n<h3 id=\"\u0437\u0430\u043c\u0435\u043d\u0430_isset_\u043d\u0430_null\">\u0417\u0430\u043c\u0435\u043d\u0430 <code>isset<\/code> \u043d\u0430 <code>!== null<\/code><\/h3>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>isset()<\/code> \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0412\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u043d\u0434 \u043d\u0430 <code>null<\/code>.<\/p>\n<p>PhpStorm \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442 \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <kbd>Alt+Enter<\/kbd> \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c <code>isset()<\/code> \u043d\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 <code>null<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_isset_to_null.png\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f_\u0432_foreach_\u0437\u0430\u0442\u0438\u0440\u0430\u0435\u0442_\u0443\u0436\u0435_\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u0443\u044e_\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e\">\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 <code>foreach<\/code> \u0437\u0430\u0442\u0438\u0440\u0430\u0435\u0442 \u0443\u0436\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e<\/h3>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0430 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 <code>foreach<\/code> \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e PHP \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043b\u044f \u043d\u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u043e\u043f\u0440\u0435\u043a\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u043c.<\/p>\n<p>PhpStorm \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442 \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0431\u0430\u0433\u043e\u0432.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_foreach_override.png\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435_\u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435_\u0441\u043a\u043e\u0431\u043a\u0438_\u0434\u043b\u044f_\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445_\u0432\u043d\u0443\u0442\u0440\u0438_\u0441\u0442\u0440\u043e\u043a\">\u041d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a<\/h3>\n<p>PhpStorm \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0435 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0432\u0430\u043c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0445 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u0434 \u0447\u0438\u0449\u0435.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_curly_braces.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435_\u0431\u0443\u043b\u0435\u0432\u044b\u0445_\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439\">\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u043b\u0435\u0432\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0431\u0443\u043b\u0435\u0432\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044b <code>true<\/code> \u0438\u043b\u0438 <code>false<\/code>, \u0442\u043e \u0435\u0433\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c.<\/p>\n<p>PhpStorm \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0438\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <kbd>Alt+Enter<\/kbd>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_boolean_can_be_simplified.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u0441\u0442\u0440\u043e\u0433\u043e\u0435_\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435_\u0441_\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c\u0438_\u0442\u0438\u043f\u0430\u043c\u0438\">\u0421\u0442\u0440\u043e\u0433\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 <\/h3>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>===<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0435\u0442 <code>false<\/code>, \u0435\u0441\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u043f\u043e \u0442\u0438\u043f\u0443.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_strict_comparison.gif\" alt=\"\" width=\"600\" \/><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c PhpStorm \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0431\u0430\u0433\u043e\u0432. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c PhpStorm \u0443\u0447\u0442\u0435\u0442 \u0432\u0441\u0435 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0438 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043d\u0435 \u0441\u0430\u043c\u044b\u0445 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_strict_comparison_2.png\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435_\u0441\u0441\u044b\u043b\u043a\u0438_http\">\u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 http:\/\/<\/h3>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 <code>http:\/\/<\/code> \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. IDE \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043a\u0432\u0438\u043a-\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b <code>http:\/\/ <\/code>\u043d\u0430 <code>https:\/\/ <\/code>(\u043f\u043e <kbd>Alt-Enter<\/kbd>). \u0422\u0430\u043a\u0436\u0435 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c URL \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_unsafe_http_links.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435_\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438_\u0438\u043c\u0435\u043d\">\u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u043d <\/h3>\n<p>PhpStorm \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>$needle<\/code> \u0438 <code>$haystack<\/code> \u0438\u043b\u0438 <code>$x<\/code> \u0438 <code>$y<\/code>.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u043c \u0431\u0430\u0433\u0430 \u043b\u0438\u0431\u043e, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043e\u0447\u0435\u043d\u044c \u043f\u0443\u0442\u0430\u044e\u0442.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_suspicious_name_combination.png\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u0437\u0430\u043c\u0435\u043d\u0430_define_\u043d\u0430_const\">\u0417\u0430\u043c\u0435\u043d\u0430 <code>define<\/code> \u043d\u0430 <code>const<\/code><\/h3>\n<p>PhpStorm \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0447\u0435\u0440\u0435\u0437 <code>define<\/code> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043b\u0435\u0433\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 <code>const<\/code>. C \u043f\u043e\u043c\u043e\u0449\u044c\u044e <kbd>Alt+Enter<\/kbd> \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0443.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/inspections_define_const.png\" alt=\"\" width=\"600\" \/><\/p>\n<h2 id=\"\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_\u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0439_\u043f\u0435\u0440\u0435\u0434_\u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438\u043d\u0441\u043f\u0435\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c \u0432 Git.<\/p>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0437\u043d\u0430\u0447\u043e\u043a \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0438, \u043e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u0447\u0435\u043a\u0431\u043e\u043a\u0441 <em>Analyze code<\/em>, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 <em>Configure<\/em> \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/before_commit_inspections.png\" alt=\"\" width=\"800\" \/><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0432 <em>Settings \/ Preferences | Editor | Inspections<\/em>.<\/p>\n<h2 id=\"\u043f\u0440\u043e\u0447\u0435\u0435\">\u041f\u0440\u043e\u0447\u0435\u0435<\/h2>\n<h3 id=\"\u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439_\u0441\u043a\u043e\u0443\u043f_\u0434\u043b\u044f_\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430\">\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u043e\u0443\u043f \u0434\u043b\u044f \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430<\/h3>\n<p>\u0426\u0438\u043a\u043b\u044b <code>foreach<\/code>, <code>for<\/code>, <code>while<\/code> \u0438 \u0431\u043b\u043e\u043a\u0438 <code>catch<\/code> \u0432 PHP \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430.<\/p>\n<p>\u0412 PhpStorm 2021.1 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u043e\u0443\u043f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430 Rename (<kbd>Shift+F6<\/kbd>) \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u043c.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/synthetic_scope_refactoring.gif\" alt=\"\" width=\"624\" \/><\/p>\n<h3 id=\"\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435_\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439_\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438_\u044f\u0437\u044b\u043a\u0430\">\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430<\/h3>\n<p>\u041f\u0440\u043e\u0448\u043b\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 PhpStorm \u0443\u043c\u0435\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u044f\u0437\u044b\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>preg_*<\/code>, \u043e\u043d\u0430 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041d\u043e \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0442\u043e \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>PhpStorm 2021.1 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0443\u043c\u0435\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/language_inject.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439_\u0438\u0437_\u0431\u043b\u043e\u043a\u0430_suggest_\u0432_composer_json\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438\u0437 \u0431\u043b\u043e\u043a\u0430 <code>suggest<\/code> \u0432 composer.json<\/h3>\n<p>\u0412 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u0438\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 PHP. \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 PhpStorm \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043b\u0438 \u044d\u0442\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <code>require<\/code> \u0432 \u0444\u0430\u0439\u043b\u0435 <code>composer.json<\/code>.<\/p>\n<p>PhpStorm 2021.1 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <code>require<\/code>, \u043d\u043e \u0438 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <code>suggest<\/code>.<\/p>\n<p>\u0415\u0449\u0435 \u0432\u0430\u0436\u043d\u0435\u0435 \u0442\u043e, \u0447\u0442\u043e PhpStorm \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 <code>suggest<\/code> \u0432 <code>composer.json<\/code>, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0442\u0438\u043f\u0430 <code>extension_loaded()<\/code> \u0438\u043b\u0438 <code>function_exists()<\/code>.<\/p>\n<p>\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0432\u0438\u043a-\u0444\u0438\u043a\u0441 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0432 <code>require\/require-dev.<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/composer_extension_quick-fix.gif\" alt=\"\" width=\"624\" \/><\/p>\n<h2 id=\"\u0432\u0430\u0436\u043d\u044b\u0435_\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\">\u0412\u0430\u0436\u043d\u044b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 2400 \u0442\u0438\u043a\u0435\u0442\u043e\u0432, \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 JetBrains \u0432 \u0442\u0440\u0435\u043a\u0435\u0440\u0435 PhpStorm. \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n        \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 WSL 2 \u0447\u0435\u0440\u0435\u0437 Docker (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/WI-53396\" target=\"_blank\" rel=\"noopener\">WI-53396<\/a>).\n    <\/li>\n<li>\n        Quality tools \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0443\u0442\u0438 \u0441 docker-compose \u0432 exec-\u0440\u0435\u0436\u0438\u043c\u0435 (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/WI-55840\" target=\"_blank\" rel=\"noopener\">WI-55840<\/a>).\n    <\/li>\n<li>\n        \u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0444\u0430\u0439\u043b\u044b PHP (5000 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435) \u0441\u0442\u0430\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/WI-31569\" target=\"_blank\" rel=\"noopener\">WI-31569<\/a>).\n    <\/li>\n<li>\n        \u0417\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u0430\u043b\u0438\u0430\u0441\u0430\u043c\u0438 (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/WI-58306\" target=\"_blank\" rel=\"noopener\">WI-58306<\/a>).\n    <\/li>\n<\/ul>\n<h2 id=\"code_with_me\">Code With Me<\/h2>\n<p><a href=\"https:\/\/www.jetbrains.com\/ru-ru\/code-with-me\/\" target=\"_blank\" rel=\"noopener\">Code With Me<\/a> \u2014 \u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 JetBrains \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0430\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0435\u0433\u043e \u0432 PhpStorm 2020.3. \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0431\u044b\u043b \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0443\u043b\u0443\u0447\u0448\u0435\u043d.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/code-with-me.gif\" alt=\"\" width=\"810\" \/><\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0438\u0431\u043a\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0441\u043e\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432.<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0442\u0435\u043f\u0435\u0440\u044c \u0433\u043e\u0441\u0442\u044f\u043c \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c IDE \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043a\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<p>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0435 \u0438 \u0432\u0438\u0434\u0435\u043e\u0437\u0432\u043e\u043d\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440.<\/p>\n<p>\u042d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 <a href=\"https:\/\/www.jetbrains.com\/ru-ru\/code-with-me\/on-prem\" target=\"_blank\" rel=\"noopener\">\u0441\u0435\u0440\u0432\u0435\u0440 Code With Me<\/a> \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e Code With Me \u0447\u0438\u0442\u0430\u0439\u0442\u0435 <a href=\"https:\/\/www.jetbrains.com\/ru-ru\/code-with-me\/\" target=\"_blank\" rel=\"noopener\">\u043d\u0430 \u0441\u0430\u0439\u0442\u0435 JetBrains<\/a>.<\/p>\n<h2 id=\"ide\">IDE<\/h2>\n<h3 id=\"\u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435_\u0432\u043a\u043b\u0430\u0434\u043e\u043a_\u0432_\u0440\u0435\u0436\u0438\u043c\u0435_split\">\u0420\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Split<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Split \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0442\u044f\u043d\u0443\u0432 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0443\u0433\u043e\u043b \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 <strong>\u0434\u0432\u0430\u0436\u0434\u044b \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435<\/strong>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u0435\u0435. \u0412\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0432 \u043f\u0440\u0435\u0436\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u043a\u043b\u0438\u043a\u043e\u043c.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/split_tab_maximize.gif\" alt=\"\" width=\"624\" \/><\/p>\n<h3 id=\"\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430_jsonpath\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 JSONPath<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b JSONPath \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c JSON-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>Edit | Find | Evaluate JSONPath<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/jsonpath.png\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430_\u0444\u043e\u0440\u043c\u0430\u0442\u0430_json_lines\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 JSON Lines<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c PhpStorm \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 <a href=\"https:\/\/jsonlines.org\/\" target=\"_blank\" rel=\"noopener\">JSON Lines<\/a> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043b\u043e\u0433\u0430\u043c\u0438. IDE \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b <em>.jsonl<\/em>, <em>.jslines<\/em>, <em>.ldjson<\/em> \u0438 <em>.ndjson<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/jsonl.png\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438_\u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 <\/h3>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0430\u0440\u044c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0448\u0440\u0438\u0444\u0442\u044b. \u041d\u043e\u0432\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>Typography Settings<\/em> \u0432 <em>Settings \/ Preferences | Editor | Fonts<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/typography.gif\" alt=\"\" width=\"800\" \/><\/p>\n<h2 id=\"docker\">Docker<\/h2>\n<h3 id=\"\u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435_\u0438\u043c\u0435\u043d_\u043e\u0431\u0440\u0430\u0437\u043e\u0432_\u0432_dockerfile\">\u0410\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 Dockerfile<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0438\u043c\u044f \u043e\u0431\u0440\u0430\u0437\u0430, \u0438 PhpStorm \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430 Docker Hub:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/docker_completion.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"\u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435_\u0432_\u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u044b\u0445_\u0444\u0430\u0439\u043b\u0430\u0445_dockerfile\">\u0421\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 Dockerfile<\/h3>\n<p>\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 Dockerfile \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 <code>FROM<\/code> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0438\u0437 \u043d\u0438\u0445, \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043b\u0438\u043d\u0438\u0435\u0439 \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/docker_folding.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h3 id=\"cancel_docker_run\">Cancel Docker run<\/h3>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e Dockerfile \u0438\u0437 \u043e\u043a\u043d\u0430 <em>Services<\/em>. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 <em>Stop Deploy<\/em> \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/p>\n<h2 id=\"\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f_\u0434\u043b\u044f_\u043f\u0443\u043b_\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432_github\">\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432 GitHub<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0437\u043d\u0430\u0447\u043e\u043a \u00ab+\u00bb \u0432 \u043e\u043a\u043d\u0435 <em>Pull Requests<\/em> \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e \u200e<em>Git | GitHub | Create Pull Request<\/em>.<\/p>\n<p>\u0412 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u043c\u043e\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n        \u0412\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0438 head-\u0432\u0435\u0442\u043a\u0438 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432\u0435\u0442\u043e\u043a.\n    <\/li>\n<li>\n        \u041f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Files.\n    <\/li>\n<li>\n        \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432, \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0435\u0432\u044c\u044e\u0435\u0440\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u0439, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0435\u0433\u0438.\n    <\/li>\n<li>\n        \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0438 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432.\n    <\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/github_pull_request.gif\" alt=\"\" width=\"624\" \/><\/p>\n<p>PhpStorm 2021.1 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b <code>pull_requst_template.md<\/code> \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u043d\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u2014 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442, \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<h3 id=\"\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430_\u0448\u0430\u0431\u043b\u043e\u043d\u0430_\u0434\u043b\u044f_git_\u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f Git-\u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432<\/h3>\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0438\u0442\u0430 PhpStorm \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>commit.template<\/code> \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Git.<\/p>\n<h2 id=\"http_\u043a\u043b\u0438\u0435\u043d\u0442\">HTTP-\u043a\u043b\u0438\u0435\u043d\u0442<\/h2>\n<h3 id=\"\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430_ssl\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 SSL<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SSL \u0432 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 <em>Add environment file<\/em> \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 <em>Private<\/em>. \u0411\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SSL: <code>clientCertificate<\/code>, <code>hasCertificatePassphrase<\/code>, <code>clientCertificateKey<\/code>, <code>verifyHostCertificate<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/http-client_ssl_config.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h2 id=\"\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f_\u0434\u043b\u044f_openapi_swagger\">\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f OpenAPI \/ Swagger<\/h2>\n<p>\u0412 PhpStorm \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 OpenAPI \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 Swagger UI.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435 Swagger UI \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 <code>$ref<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/swagger_ref.gif\" alt=\"\" width=\"600\" \/><\/p>\n<h2 id=\"\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b_\u0431\u0434\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0411\u0414<\/h2>\n<p>PhpStorm \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/www.jetbrains.com\/ru-ru\/datagrip\/\" target=\"_blank\" rel=\"noopener\">DataGrip<\/a>: \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Live Templates, \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0443\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 <a href=\"https:\/\/blog.jetbrains.com\/ru\/datagrip\/2021\/04\/02\/datagrip-2021-1-ui-for-grants-context-live-templates-edit-data-in-mongodb-and-more\/\">\u043e\u0431\u0437\u043e\u0440\u0435 \u0440\u0435\u043b\u0438\u0437\u0430 DataGrip 2021.1<\/a> \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u0433.<\/p>\n<h2 id=\"\u0432\u0435\u0431\">\u0412\u0435\u0431<\/h2>\n<p>\u0418 \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0432 PhpStorm \u0432\u043e\u0448\u043b\u0438 <a href=\"https:\/\/www.jetbrains.com\/ru-ru\/webstorm\/whatsnew\/\" target=\"_blank\" rel=\"noopener\">\u0432\u0441\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 WebStorm 2021.1<\/a>: \u0431\u043e\u043b\u0435\u0435 \u0443\u043c\u043d\u043e\u0435 \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f JavaScript \u0438 TypeScript, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Stylelint \u0438 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<hr \/>\n<p>\u0410 \u0432\u043e\u0442 \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a (\u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c), \u0433\u0434\u0435 \u043c\u044b \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430:<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/VcseIGkyaw8\" width=\"800\" height=\"450\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0432\u0441\u0435. \u0411\u0443\u0434\u0435\u043c \u0440\u0430\u0434\u044b \u0432\u0430\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u2014 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c, \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f\u043c, \u0431\u0430\u0433-\u0440\u0435\u043f\u043e\u0440\u0442\u0430\u043c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u044b\u0441\u043b\u044f\u043c. \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0438\u0445 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043d\u0438\u0436\u0435.<\/p>\n<p><em>\u0412\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 PhpStorm<br \/>\nThe Drive to Develop<\/em><\/p>\n<p>\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043d\u0430 Habr.com:<br \/>\n<a href=\"https:\/\/habr.com\/ru\/company\/JetBrains\/blog\/552310\/\" target=\"_blank\" rel=\"noopener\">https:\/\/habr.com\/ru\/company\/JetBrains\/blog\/552310\/<\/a><\/p>\n","protected":false},"author":869,"featured_media":138723,"comment_status":"closed","ping_status":"closed","template":"","categories":[907],"tags":[6412,6315,192,726,756,190],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/phpstorm\/138722"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/phpstorm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/types\/phpstorm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/users\/869"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/comments?post=138722"}],"version-history":[{"count":5,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/phpstorm\/138722\/revisions"}],"predecessor-version":[{"id":138842,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/phpstorm\/138722\/revisions\/138842"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/media\/138723"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/media?parent=138722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/categories?post=138722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/tags?post=138722"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ru\/wp-json\/wp\/v2\/cross-post-tag?post=138722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}