{"id":315240,"date":"2020-12-21T15:00:16","date_gmt":"2020-12-21T15:00:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=315240"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=315240","title":{"rendered":"\u0417\u0430 \u0447\u0442\u043e \u044f \u043b\u044e\u0431\u043b\u044e Magento 2"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0417\u043d\u0430\u0435\u0442\u0435, \u0441\u0435\u0439\u0447\u0430\u0441, \u0432 \u044d\u043f\u043e\u0445\u0443 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u0440\u0435\u0437\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 {\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 CMS, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0443\u0436\u0430\u0441\u043d\u043e\u0439} \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0431\u0438\u0442\u0440\u0438\u043a\u0441\u044b. \u0418 \u043d\u0435 \u043c\u0443\u0434\u0440\u0435\u043d\u043e, \u0432\u0435\u0434\u044c \u044d\u0442\u0438 \u0432\u0435\u0449\u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043d\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0430 \u0434\u043b\u044f \u043a\u043e\u0434\u0435\u0440\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043b\u0435\u0433\u0430\u0441\u0438, \u0442.\u043a. \u043e\u043d\u0438 \u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e<s> \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u0439-\u0434\u0430\u043b\u0451\u043a\u043e\u0439 \u0433\u0430\u043b\u0430\u043a\u0442\u0438\u043a\u0435<\/s>. \u041e\u043d\u0438 \u0440\u0435\u0448\u0430\u044e\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0438\u043c\u0435\u044e\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438 \u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442 &#8212; \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0441\u0435\u0434\u0435\u044e\u0449\u0438\u0435 \u0432\u043e\u043b\u043e\u0441\u044b \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0448\u0435\u0432\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0430\u043a\u0442 &#171;\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435&#187;.<\/p>\n<hr>\n<details class=\"spoiler\">\n<summary>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ol>\n<li>\n<p>\u0412\u0441\u0435 \u043d\u0438\u0436\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043d\u0435 \u043d\u0435\u0441\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 Magento \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0442.\u043a. \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0433\u043e. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 Magento 2, \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e &#8212; \u0445\u0432\u0430\u0441\u0442\u043e\u0432\u0441\u0442\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 &#171;\u0441\u043c\u043e\u0442\u0440\u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0443\u043c\u0435\u0435\u0442&#187;. \u0422\u0430\u043a\u0436\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>\u042f \u043d\u0435 \u0441\u043f\u043e\u0440\u044e, \u0447\u0442\u043e \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043b\u044e\u0441\u043e\u0432 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0438 \u043c\u0438\u043d\u0443\u0441\u044b, \u0438 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044e \u0447\u0442\u043e Magento \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<p>\u042f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 ModX (\u0438 \u043f\u0443\u0441\u0442\u044c \u043c\u0435\u043d\u044f \u0437\u0430\u043a\u0438\u0434\u0430\u044e\u0442 <s>\u0441\u0441\u0430\u043d\u044b\u043c\u0438<\/s> <s>\u0442\u0430\u043f\u043a\u0430\u043c\u0438<\/s> \u043a\u0430\u043c\u043d\u044f\u043c\u0438), \u0438 \u043c\u043e\u0439 \u043c\u0438\u0440 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0436\u043d\u0438\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0435 \u043c\u0435\u043d\u044f \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u0441 \u0447\u0435\u043c \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e, \u0430 \u0432 \u043e\u0442\u0432\u0435\u0442 \u0441\u043b\u044b\u0448\u0430\u0442 &#171;magento&#187;, \u0441\u0440\u0430\u0437\u0443 \u043a\u0440\u0438\u0432\u044f\u0442\u0441\u044f \u043d\u043e\u0441\u044b, \u0430 \u043c\u043d\u0435\u043d\u0438\u0435, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0430\u0434\u0430\u0435\u0442 \u043a\u0443\u0434\u0430-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u043e.<\/p>\n<p>\u041c\u043d\u0435 \u043e\u0431\u0438\u0434\u043d\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e, \u0432\u0435\u0434\u044c Magento \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043d\u0435 (\u0434\u0430 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430) \u0442\u043e\u043f-\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438. \u0414\u0430, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0433\u0430\u0441\u0438, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u0442\u044c \u0437\u0435\u043d\u043a\u0438 \u0438 \u043d\u0430\u043a\u0440\u044b\u0442\u044c \u043b\u0438\u0446\u043e \u043f\u044f\u0442\u0435\u0440\u043d\u0435\u0439, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u0430 magento 2 \u043c\u043e\u0436\u043d\u043e \u0438 \u043b\u0435\u0433\u043a\u043e (\u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u0434\u0438\u043a\u0442\u0443\u0435\u0442) \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\/\u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0442\u043e\u043f \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435 (\u043d\u0430\u043c\u043d\u043e\u0433\u043e) \u0445\u0443\u0436\u0435, \u0430 \u0433\u0434\u0435-\u0442\u043e \u0438 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445:<\/p>\n<h2>\u041c\u043e\u0449\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 DI<\/h2>\n<p>\u041c\u044b \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430 \u043d\u0430\u0441. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438\u0445<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  use Vendor\\Module\\Api\\FooInterface; use Vendor\\Module\\Model\\Bar;  class SomeModel {     private $foo;     private $bar;     private $param      public function __construct(FooInterface $foo, Bar $bar, string $param)     {         $this-&gt;foo = $foo;         $this-&gt;bar = $bar;         $this-&gt;param = $param;     } }<\/code><\/pre>\n<p>\u0425\u043e\u0447\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u043e\u043d\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 &#8212; \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 xml \u0444\u0430\u0439\u043b\u0435 di.xml:<\/p>\n<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt; &lt;config xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:ObjectManager\/etc\/config.xsd\"&gt;     &lt;!-- body --&gt; &lt;\/config&gt; <\/code><\/pre>\n<\/p>\n<p>1. \u041f\u043e\u0434\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/p>\n<p>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c preference \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0438 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0437\u0434\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/p>\n<pre><code class=\"xml\">&lt;preference for=\"Vendor\\Module\\Api\\FooInterface\"              type=\"Vendor\\Module\\Model\\Foo\" \/&gt;<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0437\u0434\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u0445 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0445 ObjectManager \u043e\u0431\u044a\u0435\u043a\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e.<\/p>\n<pre><code class=\"xml\">&lt;preference for=\"Vendor\\Module\\Model\\Bar\"              type=\"Vendor\\Module\\Model\\BarChild\" \/&gt;<\/code><\/pre>\n<\/p>\n<p>2. \u0423\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/p>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0435\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0438\u043b\u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\SomeModel\"&gt;     &lt;arguments&gt;         &lt;argument name=\"bar\" xsi:type=\"object\"&gt;Vendor\\Module\\Model\\BarChild&lt;\/argument&gt;         &lt;argument name=\"param\" xsi:type=\"string\"&gt;some string&lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>3. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b<\/p>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f &#8212; \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0441\u0432\u043e\u0438\u0445 \u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0422\u0430\u043a\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445<\/p>\n<pre><code class=\"xml\">&lt;virtualType name=\"Vendor\\Module\\Model\\SomeModelForSomethingElse\"               type=\"Vendor\\Module\\Model\\SomeModel\"&gt;     &lt;arguments&gt;         &lt;argument name=\"param\" xsi:type=\"string\"&gt;another string&lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/virtualType&gt;  &lt;type name=\"Vendor\\Module\\Model\\SomeService\"&gt;     &lt;arguments&gt;         &lt;argument name=\"someModel\" xsi:type=\"object\"&gt;Vendor\\Module\\Model\\SomeModelForSomethingElse&lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>4. \u041f\u043b\u0430\u0433\u0438\u043d\u044b<\/p>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d &#8212; \u0434\u043e (\u043f\u0440\u0435\u0444\u0438\u043a\u0441 before), \u0432\u043e \u0432\u0440\u0435\u043c\u044f (\u043f\u0440\u0435\u0444\u0438\u043a\u0441 around) \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 (\u043f\u0440\u0435\u0444\u0438\u043a\u0441 after) \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  class SomeService {     public function doSomething(Foo $foo, Bar $bar, string $param, int $number)     {         \/\/ something     } }<\/code><\/pre>\n<\/p>\n<p>\u0417\u0430\u0434\u0430\u0451\u043c \u043f\u043b\u0430\u0433\u0438\u043d:<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\SomeService\"&gt;     &lt;plugin name=\"Vendor_Module::MyCustomPlugin\"              type=\"Vendor\\Module\\Plugin\\SomeServicePlugin\" \/&gt; &lt;\/type&gt;<\/code><\/pre>\n<p>\u041a\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f: \u043f\u0440\u0435\u0444\u0438\u043a\u0441 + \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0443\u043a\u0432\u044b):<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Plugin;  use Vendor\\Module\\Model\\SomeService;  class SomeServicePlugin {     \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.     public function beforeDoSomething(SomeService $subject, Foo $foo, Bar $bar, string $param, int $number)     {         $param = 'change param';          \/\/ \u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u043d\u0443\u0436\u043d\u043e - \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c         return [$foo, $bar, $param, $number];     }      \/\/ \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \"\u0432\u043e \u0432\u0440\u0435\u043c\u044f\" \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u0412 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 - Closure - \u044d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0435\u0442\u043e\u0434     public function aroundDoSomething(SomeService $subject, \\Closure $proceed, Foo $foo, Bar $bar, string $param, int $number)     {         \/\/ do something         $result = $proceed($foo, $bar, $param, $number); \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0435\u0442\u043e\u0434         \/\/ do something else          return $result;     }      \/\/ \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442     public function afterDoSomething(SomeService $subject, $result, Foo $foo, Bar $bar, string $param, int $number)     {         $result += 1; \/\/ \u043c\u0435\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442          return $result;     } }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0430\u043c \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430. <\/p>\n<\/p>\n<p>5. ObjectManager<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430 \u043b\u0435\u0442\u0443 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 &#8212; \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c ObjectManager. \u041e\u043d \u0438\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 &#8212; get \u0438 create. get &#8212; \u0431\u0435\u0440\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 (\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u0435\u0449\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0440\u0430\u043d\u0435\u0435), \u0430 create &#8212; \u0441\u043e\u0437\u0434\u0430\u0451\u0442.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u043b\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432:<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  use Magento\\Framework\\ObjectManagerInterface;  class ProcessorPool {     private $objectManager;     private $processors;      public function __construct(ObjectManagerInterface $objectManager, array $processors)     {         $this-&gt;objectManager = $objectManager;         $this-&gt;processors = $processors;     }      public function getProcessor(string $code)     {         return $this-&gt;objectManager-&gt;get($this-&gt;processors[$code]);     } }<\/code><\/pre>\n<p>\u0418 xml:<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\ProcessorPool\"&gt;     &lt;arguments&gt;         &lt;argument name=\"processors\" xsi:type=\"array\"&gt;             &lt;item name=\"foo\" xsi:type=\"string\"&gt;Vendor\\Module\\Model\\Processor\\FooProcessor&lt;\/item&gt;             &lt;item name=\"bar\" xsi:type=\"string\"&gt;Vendor\\Module\\Model\\Processor\\BarProcessor&lt;\/item&gt;         &lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 di.xml \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0434\u043b\u044f ObjectManager &#8212; \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430. \u0413\u0434\u0435-\u0442\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445:<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\ServicePool\"&gt;     &lt;arguments&gt;         &lt;argument name=\"processors\" xsi:type=\"array\"&gt;             &lt;item name=\"foo\" xsi:type=\"string\"&gt;Vendor\\NewModule\\Model\\Processor\\NewFooProcessor&lt;\/item&gt;             &lt;item name=\"something\" xsi:type=\"string\"&gt;Vendor\\NewModule\\Model\\Processor\\SomethingProcessor&lt;\/item&gt;         &lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>6. \u0410\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0444\u0430\u0431\u0440\u0438\u043a \u0438 \u043f\u0440\u043e\u043a\u0441\u0438<\/p>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#8212; entity-\u043c\u043e\u0434\u0435\u043b\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0444\u0430\u0431\u0440\u0438\u043a\u0438. \u041d\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u0434\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e Factory \u043a \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443, \u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0435\u0433\u043e \u0444\u0430\u0431\u0440\u0438\u043a\u0443. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0438 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438:<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  use Vendor\\Module\\Api\\Data\\SomeModelInterfaceFactory;  class SomeModelRepository {     private $someModelFactory;      \/\/ \u043a\u043b\u0430\u0441\u0441 \\Vendor\\Module\\Api\\Data\\SomeModelInterfaceFactory \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438     public function __construct(SomeModelInterfaceFactory $someModelFactory)     {         $this-&gt;someModelFactory = $someModelFactory;     }      public function doSomething()     {         \/\/ \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430, \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \\Vendor\\Module\\Api\\Data\\SomeModelInterface \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438         $someModel = $this-&gt;someModelFactory-&gt;create();     } }<\/code><\/pre>\n<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0430\u0442\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438 \u043c\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0431\u0443\u0434\u0435\u043c \u043b\u0438 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 &#8212; \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432 Proxy. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c &#171;\\Proxy&#187; \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0438 &#171;Factory&#187; \u043a \u0442\u0438\u043f\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u043d\u043e \u044d\u0442\u043e \u043d\u0430\u0440\u0443\u0448\u0438\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c Proxy \u0447\u0435\u0440\u0435\u0437 di.xml<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  class SomeModelClass {     private $someBigService;      public function __construct(SomeBigService $someBigService)     {         $this-&gt;someBigService = $someBigService;     }      public function doSomething(bool $condition)     {         \/\/ \u043c\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f, \u0438 \u0442.\u043a. \u0435\u0433\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438         \/\/ \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0442\u043e\u0447\u043d\u043e \u043d\u0443\u0436\u0435\u043d         if ($condition) {             $this-&gt;someBigService-&gt;execute();         }     } }<\/code><\/pre>\n<p>di.xml<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\SomeModelClass\"&gt;     &lt;arguments&gt;         &lt;argument name=\"someBigService\"                    xsi:type=\"object\"&gt;Vendor\\Module\\Model\\SomeBigService\\Proxy&lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<p>\u0418, \u0432\u0443\u0430\u043b\u044f, \u043e\u0431\u044a\u0435\u043a\u0442 SomeBigService \u0441\u043e\u0437\u0434\u0430\u0441\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 execute().<\/p>\n<h2>Layout<\/h2>\n<p>Layout, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0433\u0438\u0431\u043a\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f xml layouts \u0432 Magento \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u0441\u0442, \u0431\u0443\u0434\u044c \u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c, \u0442\u0435\u043c\u0430, \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u043e\u0434\u0430. Layout \u0444\u0430\u0439\u043b \u0432 Magento \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code>catalog_product_view.xml<\/code><\/pre>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 &#8212; \u044d\u0442\u043e handle, \u0433\u0434\u0435 catalog &#8212; \u043f\u0435\u0440\u0435\u043a\u043b\u0438\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044f (\u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u043e\u0443\u0442\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f), product &#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0438\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0430 view &#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u042d\u0442\u043e \u0442\u0438\u043f\u043e\u0432\u043e\u0435 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e Layout \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c, \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u0442\u044c layout \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443, \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435. \u0422.\u043a. \u044d\u0442\u043e xml &#8212; \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e layout \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u0438 \u043e\u043d\u0438 \u0432\u0441\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043c\u0435\u0440\u0436\u0435\u043d\u044b \u0432 \u043e\u0434\u0438\u043d. <\/p>\n<p>\u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430, \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\"?&gt; &lt;!-- Vendor\/Module\/view\/frontend\/layout\/catalog_product_view.xml --&gt; &lt;page xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"       xsi:noNamespaceSchemaLocation=\"urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd\"&gt;     &lt;body&gt;         &lt;referenceContainer name=\"content\"&gt;             &lt;!-- \u041c\u044b \u0438\u043c\u0435\u0435\u043c \u0430\u0442\u0442\u0440\u0438\u0431\u0443\u0442\u044b before \u0438 after, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0431\u043b\u043e\u043a --&gt;             &lt;container name=\"vendor.module.some.container\"                        htmlTag=\"div\"                        htmlClass=\"my_custom_container\"                        before=\"-\"&gt;                 &lt;block class=\"Magento\\Framework\\View\\Element\\Template\"                        name=\"vendor.module.custom_product_block\"                        template=\"Vendor_Module::product\/view\/custom_block.phtml\" \/&gt;             &lt;\/container&gt;         &lt;\/referenceContainer&gt;     &lt;\/body&gt; &lt;\/page&gt;<\/code><\/pre>\n<p>  \u042f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u043b \u0431\u043b\u043e\u043a \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0442\u043e \u0436\u0435 \u043c\u0435\u0441\u0442\u043e \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0431\u043b\u043e\u043a, \u043f\u0435\u0440\u0435\u0434 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\"?&gt; &lt;!-- Vendor\/AnotherModule\/view\/frontend\/layout\/catalog_product_view.xml --&gt; &lt;page xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"       xsi:noNamespaceSchemaLocation=\"urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd\"&gt;     &lt;body&gt;         &lt;referenceContainer name=\"vendor.module.some.container\"&gt;             &lt;block class=\"Magento\\Framework\\View\\Element\\Template\"                    name=\"vendor.another_module.custom_product_block\"                    template=\"Vendor_AnotherModule::another_custom_block.phtml\"                     after=\"vendor.module.custom_product_block\"\/&gt;         &lt;\/referenceContainer&gt;     &lt;\/body&gt; &lt;\/page&gt;<\/code><\/pre>\n<p>Layouts \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f &#171;\u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u043c\u0438&#187;:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\"?&gt; &lt;page xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"       xsi:noNamespaceSchemaLocation=\"urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd\"&gt;     &lt;body&gt;         &lt;!-- \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 layout --&gt;         &lt;update handle=\"my_custom_layout_handle\" \/&gt;         &lt;!-- \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0435 --&gt;         &lt;referenceContainer name=\"container1\" remove=\"true\"\/&gt;         &lt;referenceBlock name=\"child_block1\" remove=\"true\"\/&gt;          &lt;!-- \u0418\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 container3 \u0432\u043d\u0443\u0442\u0440\u044c container2 --&gt;         &lt;move element=\"container3\" destination=\"container2\"\/&gt;     &lt;\/body&gt; &lt;\/page&gt;<\/code><\/pre>\n<p>\u0422.\u043a. \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 Magento \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 layouts, \u0442\u043e \u043c\u043e\u0436\u043d\u043e <s>\u0441\u043c\u0435\u043b\u043e<\/s> \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c (\u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430\u043c\u0438), \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u0438 \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e (\u043d\u0443 \u043f\u043e\u0447\u0442\u0438).<\/p>\n<h2>ViewModel<\/h2>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0448\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 &#8212; \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 Controller \u0432\u043e View. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0443\u043b\u043e\u0432\u043a\u0438, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 View, \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044f\u0441\u044c \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445.<\/p>\n<p>\u0414\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 Magento \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u0431\u043b\u043e\u043a\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Magento\\Catalog\\Block\\Product\\View), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 template &#8212; \u0432\u0438\u0434\u0430<\/p>\n<pre><code class=\"php\">&lt;?php  \/\/ Vendor\/Module\/view\/frontend\/templates\/some_template.phtml \/\/ \u0432\u043d\u0443\u0442\u0440\u0438 template \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f $block, \u044f\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 layout\u043a\u043b\u0430\u0441\u0441\u0430 ?&gt;  &lt;?= $block-&gt;getSomeData() ?&gt;<\/code><\/pre>\n<p>\u041d\u043e \u0441 \u0433\u043e\u0434\u0430\u043c\u0438 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u043b\u0438\u0441\u044c, \u043e\u0431\u0440\u0430\u0441\u0442\u0430\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430\u043c\u0438 (\u0442.\u043a. \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0438 \u0432 \u0441\u0435\u0431\u0435 \u043c\u043d\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043a\u043e\u0434\u0430), \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u0432 \u043f\u043e\u043b\u043e\u0442\u043d\u0430 \u0438\u0437 \u043d\u0435\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412 Magento 2.2 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b ViewModel, \u043a\u0430\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 template, \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0435\u0435:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\"?&gt; &lt;page xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"       xsi:noNamespaceSchemaLocation=\"urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd\"&gt;     &lt;body&gt;         &lt;block class=\"Magento\\Framework\\View\\Element\\Template\"                name=\"some_name\"                template=\"Vendor_Module::some_template.phtml\"&gt;             &lt;arguments&gt;                 &lt;argument name=\"some_view_model\" xsi:type=\"object\"&gt;Vendor\\Module\\ViewModel\\SomeViewModel&lt;\/argument&gt;                 &lt;argument name=\"another_view_model\" xsi:type=\"object\"&gt;Vendor\\Module\\ViewModel\\AnotherViewModel&lt;\/argument&gt;             &lt;\/arguments&gt;         &lt;\/block&gt;     &lt;\/body&gt; &lt;\/page&gt;<\/code><\/pre>\n<p>\u0438 \u0432 template:<\/p>\n<pre><code class=\"php\">&lt;?php \/** @var Vendor\\Module\\ViewModel\\SomeViewModel $someViewModel *\/ $someViewModel = $block-&gt;getSomeViewModel(); \/** @var Vendor\\Module\\ViewModel\\AnotherViewModel $anotherViewModel *\/ $anotherViewModel = $block-&gt;getAnotherViewModel(); ?&gt;<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0434\u043d\u0443 ViewModel \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445, \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f \u0438 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044f\u0441\u044c \u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435.<\/p>\n<h2>Declarative Schema<\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0411\u0414 &#8212; \u044d\u0442\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438. \u0418 \u044f \u0432\u0438\u0434\u0435\u043b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u043f\u0430\u043f\u043a\u0438 \u0441 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u0434\u0430 \u0438 \u0441\u0430\u043c\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u043d\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0418 \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a (\u0435\u0441\u043b\u0438 \u0443\u0436 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0440\u0430\u0437 Magento-\u0441\u043b\u0443\u0447\u0430\u0439), \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441 \u043d\u0443\u043b\u044f &#8212; \u0432\u0441\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b.<\/p>\n<p>Declarative Schema &#8212; \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432 xml \u0444\u0430\u0439\u043b\u0435. \u041d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c xml \u0444\u0430\u0439\u043b\u0438\u043a. Magento \u0441\u0430\u043c\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u0411\u0414, \u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0411\u0414, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0440\u044f\u0434\u0443 \u0441 Declarative Schema \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0449\u0435 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0430\u0442\u0447\u0435\u0439 (php-\u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043b\u043e\u0433\u0438\u043a\u0443). <\/p>\n<\/p>\n<h2>UI \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/h2>\n<p>\u0422.\u043a. xml &#8212; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0438\u0431\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e\u0435. \u041f\u043e\u043c\u043d\u0438\u0442\u0435 layout\u044b? Xml Layouts + DI \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e JS \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0430\u043a\u0436\u0435 \u0433\u0438\u0431\u043a\u043e, \u043a\u0430\u043a \u0438 \u0434\u0435\u0440\u0435\u0432\u043e PHP \u0431\u043b\u043e\u043a\u043e\u0432. \u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 layout \u0434\u043b\u044f \u0447\u0435\u043a\u0430\u0443\u0442\u0430 (\u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430)<\/p>\n<details class=\"spoiler\">\n<summary>checkout_index_index.xml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\"?&gt; &lt;!-- \/**  * Copyright \u00a9 Magento, Inc. All rights reserved.  * See COPYING.txt for license details.  *\/ --&gt; &lt;page xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" layout=\"checkout\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd\"&gt;     &lt;body&gt;         &lt;referenceContainer name=\"content\"&gt;             &lt;block class=\"Magento\\Checkout\\Block\\Onepage\" name=\"checkout.root\" template=\"Magento_Checkout::onepage.phtml\" cacheable=\"false\"&gt;                 &lt;arguments&gt;                     &lt;argument name=\"jsLayout\" xsi:type=\"array\"&gt;                         &lt;item name=\"types\" xsi:type=\"array\"&gt;                             &lt;item name=\"form.input\" xsi:type=\"array\"&gt;                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Ui\/js\/form\/element\/abstract&lt;\/item&gt;                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                     &lt;item name=\"provider\" xsi:type=\"string\"&gt;checkoutProvider&lt;\/item&gt;                                     &lt;item name=\"deps\" xsi:type=\"array\"&gt;                                         &lt;item name=\"0\" xsi:type=\"string\"&gt;checkoutProvider&lt;\/item&gt;                                     &lt;\/item&gt;                                     &lt;item name=\"template\" xsi:type=\"string\"&gt;ui\/form\/field&lt;\/item&gt;                                     &lt;item name=\"elementTmpl\" xsi:type=\"string\"&gt;ui\/form\/element\/input&lt;\/item&gt;                                 &lt;\/item&gt;                             &lt;\/item&gt;                         &lt;\/item&gt;                         &lt;item name=\"components\" xsi:type=\"array\"&gt;                             &lt;item name=\"checkout\" xsi:type=\"array\"&gt;                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                     &lt;item name=\"template\" xsi:type=\"string\"&gt;Magento_Checkout\/onepage&lt;\/item&gt;                                 &lt;\/item&gt;                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                     &lt;item name=\"errors\" xsi:type=\"array\"&gt;                                         &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;0&lt;\/item&gt;                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Ui\/js\/view\/messages&lt;\/item&gt;                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;messages&lt;\/item&gt;                                     &lt;\/item&gt;                                     &lt;item name=\"authentication\" xsi:type=\"array\"&gt;                                         &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;1&lt;\/item&gt;                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/authentication&lt;\/item&gt;                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;authentication&lt;\/item&gt;                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                             &lt;!--Additional authentication fields--&gt;                                             &lt;item name=\"errors\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;0&lt;\/item&gt;                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/authentication-messages&lt;\/item&gt;                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;messages&lt;\/item&gt;                                             &lt;\/item&gt;                                         &lt;\/item&gt;                                     &lt;\/item&gt;                                     &lt;item name=\"progressBar\" xsi:type=\"array\"&gt;                                         &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;0&lt;\/item&gt;                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/progress-bar&lt;\/item&gt;                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;progressBar&lt;\/item&gt;                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                             &lt;item name=\"deps\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"0\" xsi:type=\"string\"&gt;checkout.steps.shipping-step.shippingAddress&lt;\/item&gt;                                                 &lt;item name=\"1\" xsi:type=\"string\"&gt;checkout.steps.billing-step.payment&lt;\/item&gt;                                             &lt;\/item&gt;                                         &lt;\/item&gt;                                     &lt;\/item&gt;                                     &lt;item name=\"estimation\" xsi:type=\"array\"&gt;                                         &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;10&lt;\/item&gt;                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/estimation&lt;\/item&gt;                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;estimation&lt;\/item&gt;                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                             &lt;item name=\"template\" xsi:type=\"string\"&gt;Magento_Checkout\/estimation&lt;\/item&gt;                                             &lt;item name=\"deps\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"0\" xsi:type=\"string\"&gt;checkout.sidebar&lt;\/item&gt;                                             &lt;\/item&gt;                                         &lt;\/item&gt;                                     &lt;\/item&gt;                                     &lt;item name=\"steps\" xsi:type=\"array\"&gt;                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;steps&lt;\/item&gt;                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                             &lt;item name=\"shipping-step\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                 &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;1&lt;\/item&gt;                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                     &lt;item name=\"step-config\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                             &lt;item name=\"shipping-rates-validation\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!--Step configuration components--&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                         &lt;\/item&gt;                                                     &lt;\/item&gt;                                                     &lt;item name=\"shippingAddress\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                             &lt;item name=\"deps\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"0\" xsi:type=\"string\"&gt;checkout.steps.shipping-step.step-config&lt;\/item&gt;                                                                 &lt;item name=\"1\" xsi:type=\"string\"&gt;checkoutProvider&lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"popUpForm\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"element\" xsi:type=\"string\"&gt;#opc-new-shipping-address&lt;\/item&gt;                                                                 &lt;item name=\"options\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"type\" xsi:type=\"string\"&gt;popup&lt;\/item&gt;                                                                     &lt;item name=\"responsive\" xsi:type=\"boolean\"&gt;true&lt;\/item&gt;                                                                     &lt;item name=\"innerScroll\" xsi:type=\"boolean\"&gt;true&lt;\/item&gt;                                                                     &lt;item name=\"title\" xsi:type=\"string\" translate=\"true\"&gt;Shipping Address&lt;\/item&gt;                                                                     &lt;item name=\"trigger\" xsi:type=\"string\"&gt;opc-new-shipping-address&lt;\/item&gt;                                                                     &lt;item name=\"buttons\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"save\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"text\" xsi:type=\"string\" translate=\"true\"&gt;Ship Here&lt;\/item&gt;                                                                             &lt;item name=\"class\" xsi:type=\"string\"&gt;action primary action-save-address&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                         &lt;item name=\"cancel\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"text\" xsi:type=\"string\" translate=\"true\"&gt;Cancel&lt;\/item&gt;                                                                             &lt;item name=\"class\" xsi:type=\"string\"&gt;action secondary action-hide-popup&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                         &lt;\/item&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/shipping&lt;\/item&gt;                                                         &lt;item name=\"provider\" xsi:type=\"string\"&gt;checkoutProvider&lt;\/item&gt;                                                         &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;10&lt;\/item&gt;                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                             &lt;item name=\"customer-email\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/form\/element\/email&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;customer-email&lt;\/item&gt;                                                                 &lt;item name=\"tooltip\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"description\" xsi:type=\"string\" translate=\"true\"&gt;We'll send your order confirmation here.&lt;\/item&gt;                                                                 &lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"before-login-form\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;before-login-form&lt;\/item&gt;                                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                             &lt;!-- before login form fields --&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"additional-login-form-fields\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;additional-login-form-fields&lt;\/item&gt;                                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                             &lt;!-- additional login form fields --&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"before-form\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;before-form&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- before form fields --&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"before-fields\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;before-fields&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- before fields --&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"address-list\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/shipping-address\/list&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;address-list&lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"address-list-additional-addresses\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;address-list-additional-addresses&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- address-list-additional-addresses --&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"before-shipping-method-form\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;before-shipping-method-form&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- address-list-additional-addresses --&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"shipping-address-fieldset\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"deps\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"0\" xsi:type=\"string\"&gt;checkoutProvider&lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;additional-fieldsets&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- The following items override configuration of corresponding address attributes --&gt;                                                                     &lt;item name=\"region\" xsi:type=\"array\"&gt;                                                                         &lt;!-- Make region attribute invisible on frontend. Corresponding input element is created by region_id field --&gt;                                                                         &lt;item name=\"visible\" xsi:type=\"boolean\"&gt;false&lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"region_id\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Ui\/js\/form\/element\/region&lt;\/item&gt;                                                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"template\" xsi:type=\"string\"&gt;ui\/form\/field&lt;\/item&gt;                                                                             &lt;item name=\"elementTmpl\" xsi:type=\"string\"&gt;ui\/form\/element\/select&lt;\/item&gt;                                                                             &lt;item name=\"customEntry\" xsi:type=\"string\"&gt;shippingAddress.region&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                         &lt;item name=\"validation\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"required-entry\" xsi:type=\"boolean\"&gt;true&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                         &lt;!-- Value of region_id field is filtered by the value of county_id attribute --&gt;                                                                         &lt;item name=\"filterBy\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"target\" xsi:type=\"string\"&gt;&lt;![CDATA[${ $.provider }:${ $.parentScope }.country_id]]&gt;&lt;\/item&gt;                                                                             &lt;item name=\"field\" xsi:type=\"string\"&gt;country_id&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"postcode\" xsi:type=\"array\"&gt;                                                                         &lt;!-- post-code field has custom UI component --&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Ui\/js\/form\/element\/post-code&lt;\/item&gt;                                                                         &lt;item name=\"validation\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"required-entry\" xsi:type=\"boolean\"&gt;true&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"company\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"validation\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"min_text_length\" xsi:type=\"number\"&gt;0&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"fax\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"validation\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"min_text_length\" xsi:type=\"number\"&gt;0&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"telephone\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"tooltip\" xsi:type=\"array\"&gt;                                                                                 &lt;item name=\"description\" xsi:type=\"string\" translate=\"true\"&gt;For delivery questions.&lt;\/item&gt;                                                                             &lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                         &lt;\/item&gt;                                                     &lt;\/item&gt;                                                 &lt;\/item&gt;                                             &lt;\/item&gt;                                             &lt;item name=\"billing-step\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                 &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;2&lt;\/item&gt;                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                     &lt;item name=\"payment\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/payment&lt;\/item&gt;                                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                             &lt;item name=\"title\" xsi:type=\"string\" translate=\"true\"&gt;Payment&lt;\/item&gt;                                                             &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;20&lt;\/item&gt;                                                         &lt;\/item&gt;                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                             &lt;item name=\"renders\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- merge payment method renders here --&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"additional-payment-validators\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- merge payment validators here --&gt;                                                                     &lt;item name=\"email-validator\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/payment\/email-validator&lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"customer-email\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/form\/element\/email&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;customer-email&lt;\/item&gt;                                                                 &lt;item name=\"tooltip\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"description\" xsi:type=\"string\" translate=\"true\"&gt;We'll send your order confirmation here.&lt;\/item&gt;                                                                 &lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"before-login-form\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;before-login-form&lt;\/item&gt;                                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                             &lt;!-- before login form fields --&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"additional-login-form-fields\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;additional-login-form-fields&lt;\/item&gt;                                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                             &lt;!-- additional login form fields --&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"place-order-captcha\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/checkout\/placeOrderCaptcha&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;place-order-captcha&lt;\/item&gt;                                                                 &lt;item name=\"formId\" xsi:type=\"string\"&gt;payment_processing_request&lt;\/item&gt;                                                                 &lt;item name=\"configSource\" xsi:type=\"string\"&gt;checkoutConfig&lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"beforeMethods\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;beforeMethods&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- merge additional data before payment methods here --&gt;                                                                 &lt;\/item&gt;                                                                 &lt;item name=\"validation\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"validate-select\" xsi:type=\"string\"&gt;true&lt;\/item&gt;                                                                 &lt;\/item&gt;                                                                 &lt;!-- Value of region_id field is filtered by the value of county_id attribute --&gt;                                                                 &lt;item name=\"filterBy\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"target\" xsi:type=\"string\"&gt;${ $.provider }:${ $.parentScope }.country_id&lt;\/item&gt;                                                                     &lt;item name=\"field\" xsi:type=\"string\"&gt;country_id&lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"payments-list\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/payment\/list&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;payment-methods-list&lt;\/item&gt;                                                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"deps\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"0\" xsi:type=\"string\"&gt;checkout.steps.billing-step.payment.renders&lt;\/item&gt;                                                                         &lt;item name=\"1\" xsi:type=\"string\"&gt;checkout.steps.billing-step.payment.additional-payment-validators&lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"before-place-order\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;before-place-order&lt;\/item&gt;                                                                         &lt;item name=\"dataScope\" xsi:type=\"string\"&gt;before-place-order&lt;\/item&gt;                                                                         &lt;item name=\"provider\" xsi:type=\"string\"&gt;checkoutProvider&lt;\/item&gt;                                                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                             &lt;item name=\"template\" xsi:type=\"string\"&gt;Magento_Checkout\/payment\/before-place-order&lt;\/item&gt;                                                                         &lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;!-- merge your payment methods here --&gt;                                                             &lt;item name=\"afterMethods\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;afterMethods&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;!-- merge additional data after payment methods here --&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                         &lt;\/item&gt;                                                     &lt;\/item&gt;                                                 &lt;\/item&gt;                                             &lt;\/item&gt;                                         &lt;\/item&gt;                                     &lt;\/item&gt;                                     &lt;item name=\"sidebar\" xsi:type=\"array\"&gt;                                         &lt;item name=\"sortOrder\" xsi:type=\"string\"&gt;50&lt;\/item&gt;                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/sidebar&lt;\/item&gt;                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;sidebar&lt;\/item&gt;                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                             &lt;item name=\"template\" xsi:type=\"string\"&gt;Magento_Checkout\/sidebar&lt;\/item&gt;                                             &lt;item name=\"deps\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"0\" xsi:type=\"string\"&gt;checkout.steps&lt;\/item&gt;                                             &lt;\/item&gt;                                         &lt;\/item&gt;                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                             &lt;item name=\"summary\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary&lt;\/item&gt;                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;summary&lt;\/item&gt;                                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                     &lt;item name=\"template\" xsi:type=\"string\"&gt;Magento_Checkout\/summary&lt;\/item&gt;                                                 &lt;\/item&gt;                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                     &lt;item name=\"totals\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/totals&lt;\/item&gt;                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;totals&lt;\/item&gt;                                                         &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                             &lt;item name=\"template\" xsi:type=\"string\"&gt;Magento_Checkout\/summary\/totals&lt;\/item&gt;                                                         &lt;\/item&gt;                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                             &lt;!-- sort order for this totals is configured on admin panel--&gt;                                                             &lt;!-- Stores-&gt;Configuration-&gt;SALES-&gt;Sales-&gt;General-&gt;Checkout Totals Sort Order --&gt;                                                             &lt;item name=\"subtotal\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/subtotal&lt;\/item&gt;                                                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"title\" xsi:type=\"string\" translate=\"true\"&gt;Cart Subtotal&lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"shipping\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/shipping&lt;\/item&gt;                                                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"title\" xsi:type=\"string\" translate=\"true\"&gt;Shipping&lt;\/item&gt;                                                                     &lt;item name=\"notCalculatedMessage\" xsi:type=\"string\" translate=\"true\"&gt;Not yet calculated&lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                             &lt;item name=\"grand-total\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/grand-total&lt;\/item&gt;                                                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"title\" xsi:type=\"string\" translate=\"true\"&gt;Order Total&lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                         &lt;\/item&gt;                                                     &lt;\/item&gt;                                                     &lt;item name=\"itemsBefore\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                             &lt;!-- merge your components here --&gt;                                                         &lt;\/item&gt;                                                     &lt;\/item&gt;                                                     &lt;item name=\"cart_items\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/cart-items&lt;\/item&gt;                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                             &lt;item name=\"details\" xsi:type=\"array\"&gt;                                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/item\/details&lt;\/item&gt;                                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                                     &lt;item name=\"thumbnail\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/item\/details\/thumbnail&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;before_details&lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"subtotal\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/item\/details\/subtotal&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;after_details&lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                     &lt;item name=\"message\" xsi:type=\"array\"&gt;                                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/summary\/item\/details\/message&lt;\/item&gt;                                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;item_message&lt;\/item&gt;                                                                     &lt;\/item&gt;                                                                 &lt;\/item&gt;                                                             &lt;\/item&gt;                                                         &lt;\/item&gt;                                                     &lt;\/item&gt;                                                     &lt;item name=\"itemsAfter\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                                                         &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                             &lt;!-- merge your components here --&gt;                                                         &lt;\/item&gt;                                                     &lt;\/item&gt;                                                 &lt;\/item&gt;                                             &lt;\/item&gt;                                             &lt;item name=\"shipping-information\" xsi:type=\"array\"&gt;                                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/shipping-information&lt;\/item&gt;                                                 &lt;item name=\"config\" xsi:type=\"array\"&gt;                                                     &lt;item name=\"deps\" xsi:type=\"string\"&gt;checkout.steps.shipping-step.shippingAddress&lt;\/item&gt;                                                 &lt;\/item&gt;                                                 &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;shipping-information&lt;\/item&gt;                                                 &lt;item name=\"children\" xsi:type=\"array\"&gt;                                                     &lt;item name=\"ship-to\" xsi:type=\"array\"&gt;                                                         &lt;item name=\"component\" xsi:type=\"string\"&gt;Magento_Checkout\/js\/view\/shipping-information\/list&lt;\/item&gt;                                                         &lt;item name=\"displayArea\" xsi:type=\"string\"&gt;ship-to&lt;\/item&gt;                                                     &lt;\/item&gt;                                                 &lt;\/item&gt;                                             &lt;\/item&gt;                                         &lt;\/item&gt;                                     &lt;\/item&gt;                                 &lt;\/item&gt;                             &lt;\/item&gt;                             &lt;item name=\"checkoutProvider\" xsi:type=\"array\"&gt;                                 &lt;item name=\"component\" xsi:type=\"string\"&gt;uiComponent&lt;\/item&gt;                             &lt;\/item&gt;                         &lt;\/item&gt;                     &lt;\/argument&gt;                 &lt;\/arguments&gt;             &lt;\/block&gt;         &lt;\/referenceContainer&gt;         &lt;referenceContainer name=\"page.messages\" remove=\"true\"\/&gt;     &lt;\/body&gt; &lt;\/page&gt; <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041c\u044b \u0437\u0430\u0434\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432 PHP Array, \u043d\u043e \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f xml \u0438 Magento 2 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0435.<\/p>\n<\/p>\n<p>\u0412 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e UI Component \u0444\u043e\u0440\u043c\u0443, \u0433\u0440\u0438\u0434 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0435 (\u0434\u0430, \u0435\u0449\u0435 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0444\u043e\u0440\u043c\u044b \u0438 \u0433\u0440\u0438\u0434\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 &#171;\u043f\u043e-\u0441\u0442\u0430\u0440\u043e\u043c\u0443&#187; \u0432 PHP \u043a\u043b\u0430\u0441\u0441\u0430\u0445), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u043d\u0430 UI Grid:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt; &lt;!-- \/**  * Copyright \u00a9 Magento, Inc. All rights reserved.  * See COPYING.txt for license details.  *\/ --&gt; &lt;listing xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:module:Magento_Ui:etc\/ui_configuration.xsd\"&gt;     &lt;columns name=\"sales_order_columns\"&gt;         &lt;column name=\"refunded_to_store_credit\" class=\"Magento\\Sales\\Ui\\Component\\Listing\\Column\\Price\"&gt;             &lt;settings&gt;                 &lt;label translate=\"true\"&gt;Refunded to Store Credit&lt;\/label&gt;                 &lt;visible&gt;false&lt;\/visible&gt;             &lt;\/settings&gt;         &lt;\/column&gt;     &lt;\/columns&gt; &lt;\/listing&gt;<\/code><\/pre>\n<\/p>\n<p>\u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0445\u043e\u0447\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0432 \u043f\u043b\u0430\u043d\u0435 \u043d\u043e\u0432\u0438\u043d\u043e\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 Magento \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e php 7.3 \u0438 7.4, elasticsearch 7.4\/7.6<\/p>\n<\/p>\n<p>P.S. \u042f \u0445\u043e\u0447\u0443 \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0435 \u043b\u0438\u0448\u0435\u043d\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 :). \u042f \u043d\u0435 \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0446\u0435\u043b\u044c \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e Magento &#8212; \u043a\u0432\u0438\u043d\u0442\u044d\u0441\u0441\u0435\u043d\u0446\u0438\u044f \u0432\u0441\u0435\u0433\u043e, \u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u0440\u043e\u0447\u043d\u043e \u0431\u0440\u043e\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0435 {cms\/frameworkName} \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 Magento. \u042f \u043b\u0438\u0448\u044c \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e Magento 2 \u043d\u0435 \u0434\u043b\u044f &#171;\u043a\u043e\u0434\u0438\u043d\u0433\u0430&#187;, \u0430 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u0434\u043b\u044f &#171;\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&#187;. <\/p>\n<\/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\/532232\/\"> https:\/\/habr.com\/ru\/post\/532232\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0417\u043d\u0430\u0435\u0442\u0435, \u0441\u0435\u0439\u0447\u0430\u0441, \u0432 \u044d\u043f\u043e\u0445\u0443 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u0440\u0435\u0437\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 {\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 CMS, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0443\u0436\u0430\u0441\u043d\u043e\u0439} \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0431\u0438\u0442\u0440\u0438\u043a\u0441\u044b. \u0418 \u043d\u0435 \u043c\u0443\u0434\u0440\u0435\u043d\u043e, \u0432\u0435\u0434\u044c \u044d\u0442\u0438 \u0432\u0435\u0449\u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043d\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0430 \u0434\u043b\u044f \u043a\u043e\u0434\u0435\u0440\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043b\u0435\u0433\u0430\u0441\u0438, \u0442.\u043a. \u043e\u043d\u0438 \u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e<s> \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u0439-\u0434\u0430\u043b\u0451\u043a\u043e\u0439 \u0433\u0430\u043b\u0430\u043a\u0442\u0438\u043a\u0435<\/s>. \u041e\u043d\u0438 \u0440\u0435\u0448\u0430\u044e\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0438\u043c\u0435\u044e\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438 \u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442 &#8212; \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0441\u0435\u0434\u0435\u044e\u0449\u0438\u0435 \u0432\u043e\u043b\u043e\u0441\u044b \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0448\u0435\u0432\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0430\u043a\u0442 &#171;\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435&#187;.<\/p>\n<hr>\n<details class=\"spoiler\">\n<summary>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ol>\n<li>\n<p>\u0412\u0441\u0435 \u043d\u0438\u0436\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043d\u0435 \u043d\u0435\u0441\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 Magento \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0442.\u043a. \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0433\u043e. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 Magento 2, \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e &#8212; \u0445\u0432\u0430\u0441\u0442\u043e\u0432\u0441\u0442\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 &#171;\u0441\u043c\u043e\u0442\u0440\u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0443\u043c\u0435\u0435\u0442&#187;. \u0422\u0430\u043a\u0436\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>\u042f \u043d\u0435 \u0441\u043f\u043e\u0440\u044e, \u0447\u0442\u043e \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043b\u044e\u0441\u043e\u0432 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0438 \u043c\u0438\u043d\u0443\u0441\u044b, \u0438 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044e \u0447\u0442\u043e Magento \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<p>\u042f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 ModX (\u0438 \u043f\u0443\u0441\u0442\u044c \u043c\u0435\u043d\u044f \u0437\u0430\u043a\u0438\u0434\u0430\u044e\u0442 <s>\u0441\u0441\u0430\u043d\u044b\u043c\u0438<\/s> <s>\u0442\u0430\u043f\u043a\u0430\u043c\u0438<\/s> \u043a\u0430\u043c\u043d\u044f\u043c\u0438), \u0438 \u043c\u043e\u0439 \u043c\u0438\u0440 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0436\u043d\u0438\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0435 \u043c\u0435\u043d\u044f \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u0441 \u0447\u0435\u043c \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e, \u0430 \u0432 \u043e\u0442\u0432\u0435\u0442 \u0441\u043b\u044b\u0448\u0430\u0442 &#171;magento&#187;, \u0441\u0440\u0430\u0437\u0443 \u043a\u0440\u0438\u0432\u044f\u0442\u0441\u044f \u043d\u043e\u0441\u044b, \u0430 \u043c\u043d\u0435\u043d\u0438\u0435, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0430\u0434\u0430\u0435\u0442 \u043a\u0443\u0434\u0430-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u043e.<\/p>\n<p>\u041c\u043d\u0435 \u043e\u0431\u0438\u0434\u043d\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e, \u0432\u0435\u0434\u044c Magento \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043d\u0435 (\u0434\u0430 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430) \u0442\u043e\u043f-\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438. \u0414\u0430, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0433\u0430\u0441\u0438, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u0442\u044c \u0437\u0435\u043d\u043a\u0438 \u0438 \u043d\u0430\u043a\u0440\u044b\u0442\u044c \u043b\u0438\u0446\u043e \u043f\u044f\u0442\u0435\u0440\u043d\u0435\u0439, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u0430 magento 2 \u043c\u043e\u0436\u043d\u043e \u0438 \u043b\u0435\u0433\u043a\u043e (\u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u0434\u0438\u043a\u0442\u0443\u0435\u0442) \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\/\u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0442\u043e\u043f \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435 (\u043d\u0430\u043c\u043d\u043e\u0433\u043e) \u0445\u0443\u0436\u0435, \u0430 \u0433\u0434\u0435-\u0442\u043e \u0438 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445:<\/p>\n<h2>\u041c\u043e\u0449\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 DI<\/h2>\n<p>\u041c\u044b \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430 \u043d\u0430\u0441. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438\u0445<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  use Vendor\\Module\\Api\\FooInterface; use Vendor\\Module\\Model\\Bar;  class SomeModel {     private $foo;     private $bar;     private $param      public function __construct(FooInterface $foo, Bar $bar, string $param)     {         $this-&gt;foo = $foo;         $this-&gt;bar = $bar;         $this-&gt;param = $param;     } }<\/code><\/pre>\n<p>\u0425\u043e\u0447\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u043e\u043d\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 &#8212; \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 xml \u0444\u0430\u0439\u043b\u0435 di.xml:<\/p>\n<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt; &lt;config xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:ObjectManager\/etc\/config.xsd\"&gt;     &lt;!-- body --&gt; &lt;\/config&gt; <\/code><\/pre>\n<\/p>\n<p>1. \u041f\u043e\u0434\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/p>\n<p>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c preference \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0438 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0437\u0434\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/p>\n<pre><code class=\"xml\">&lt;preference for=\"Vendor\\Module\\Api\\FooInterface\"              type=\"Vendor\\Module\\Model\\Foo\" \/&gt;<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0437\u0434\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u0445 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0445 ObjectManager \u043e\u0431\u044a\u0435\u043a\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e.<\/p>\n<pre><code class=\"xml\">&lt;preference for=\"Vendor\\Module\\Model\\Bar\"              type=\"Vendor\\Module\\Model\\BarChild\" \/&gt;<\/code><\/pre>\n<\/p>\n<p>2. \u0423\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/p>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0435\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0438\u043b\u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\SomeModel\"&gt;     &lt;arguments&gt;         &lt;argument name=\"bar\" xsi:type=\"object\"&gt;Vendor\\Module\\Model\\BarChild&lt;\/argument&gt;         &lt;argument name=\"param\" xsi:type=\"string\"&gt;some string&lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>3. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b<\/p>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f &#8212; \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0441\u0432\u043e\u0438\u0445 \u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0422\u0430\u043a\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445<\/p>\n<pre><code class=\"xml\">&lt;virtualType name=\"Vendor\\Module\\Model\\SomeModelForSomethingElse\"               type=\"Vendor\\Module\\Model\\SomeModel\"&gt;     &lt;arguments&gt;         &lt;argument name=\"param\" xsi:type=\"string\"&gt;another string&lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/virtualType&gt;  &lt;type name=\"Vendor\\Module\\Model\\SomeService\"&gt;     &lt;arguments&gt;         &lt;argument name=\"someModel\" xsi:type=\"object\"&gt;Vendor\\Module\\Model\\SomeModelForSomethingElse&lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>4. \u041f\u043b\u0430\u0433\u0438\u043d\u044b<\/p>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d &#8212; \u0434\u043e (\u043f\u0440\u0435\u0444\u0438\u043a\u0441 before), \u0432\u043e \u0432\u0440\u0435\u043c\u044f (\u043f\u0440\u0435\u0444\u0438\u043a\u0441 around) \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 (\u043f\u0440\u0435\u0444\u0438\u043a\u0441 after) \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  class SomeService {     public function doSomething(Foo $foo, Bar $bar, string $param, int $number)     {         \/\/ something     } }<\/code><\/pre>\n<\/p>\n<p>\u0417\u0430\u0434\u0430\u0451\u043c \u043f\u043b\u0430\u0433\u0438\u043d:<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\SomeService\"&gt;     &lt;plugin name=\"Vendor_Module::MyCustomPlugin\"              type=\"Vendor\\Module\\Plugin\\SomeServicePlugin\" \/&gt; &lt;\/type&gt;<\/code><\/pre>\n<p>\u041a\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f: \u043f\u0440\u0435\u0444\u0438\u043a\u0441 + \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0443\u043a\u0432\u044b):<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Plugin;  use Vendor\\Module\\Model\\SomeService;  class SomeServicePlugin {     \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.     public function beforeDoSomething(SomeService $subject, Foo $foo, Bar $bar, string $param, int $number)     {         $param = 'change param';          \/\/ \u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u043d\u0443\u0436\u043d\u043e - \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c         return [$foo, $bar, $param, $number];     }      \/\/ \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \"\u0432\u043e \u0432\u0440\u0435\u043c\u044f\" \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u0412 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 - Closure - \u044d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0435\u0442\u043e\u0434     public function aroundDoSomething(SomeService $subject, \\Closure $proceed, Foo $foo, Bar $bar, string $param, int $number)     {         \/\/ do something         $result = $proceed($foo, $bar, $param, $number); \/\/ \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0435\u0442\u043e\u0434         \/\/ do something else          return $result;     }      \/\/ \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442     public function afterDoSomething(SomeService $subject, $result, Foo $foo, Bar $bar, string $param, int $number)     {         $result += 1; \/\/ \u043c\u0435\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442          return $result;     } }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0430\u043c \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430. <\/p>\n<\/p>\n<p>5. ObjectManager<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430 \u043b\u0435\u0442\u0443 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 &#8212; \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c ObjectManager. \u041e\u043d \u0438\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 &#8212; get \u0438 create. get &#8212; \u0431\u0435\u0440\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 (\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u0435\u0449\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0440\u0430\u043d\u0435\u0435), \u0430 create &#8212; \u0441\u043e\u0437\u0434\u0430\u0451\u0442.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u043b\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432:<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  use Magento\\Framework\\ObjectManagerInterface;  class ProcessorPool {     private $objectManager;     private $processors;      public function __construct(ObjectManagerInterface $objectManager, array $processors)     {         $this-&gt;objectManager = $objectManager;         $this-&gt;processors = $processors;     }      public function getProcessor(string $code)     {         return $this-&gt;objectManager-&gt;get($this-&gt;processors[$code]);     } }<\/code><\/pre>\n<p>\u0418 xml:<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\ProcessorPool\"&gt;     &lt;arguments&gt;         &lt;argument name=\"processors\" xsi:type=\"array\"&gt;             &lt;item name=\"foo\" xsi:type=\"string\"&gt;Vendor\\Module\\Model\\Processor\\FooProcessor&lt;\/item&gt;             &lt;item name=\"bar\" xsi:type=\"string\"&gt;Vendor\\Module\\Model\\Processor\\BarProcessor&lt;\/item&gt;         &lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 di.xml \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0434\u043b\u044f ObjectManager &#8212; \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430. \u0413\u0434\u0435-\u0442\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445:<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\ServicePool\"&gt;     &lt;arguments&gt;         &lt;argument name=\"processors\" xsi:type=\"array\"&gt;             &lt;item name=\"foo\" xsi:type=\"string\"&gt;Vendor\\NewModule\\Model\\Processor\\NewFooProcessor&lt;\/item&gt;             &lt;item name=\"something\" xsi:type=\"string\"&gt;Vendor\\NewModule\\Model\\Processor\\SomethingProcessor&lt;\/item&gt;         &lt;\/argument&gt;     &lt;\/arguments&gt; &lt;\/type&gt;<\/code><\/pre>\n<\/p>\n<p>6. \u0410\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0444\u0430\u0431\u0440\u0438\u043a \u0438 \u043f\u0440\u043e\u043a\u0441\u0438<\/p>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#8212; entity-\u043c\u043e\u0434\u0435\u043b\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0444\u0430\u0431\u0440\u0438\u043a\u0438. \u041d\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u0434\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e Factory \u043a \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443, \u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0435\u0433\u043e \u0444\u0430\u0431\u0440\u0438\u043a\u0443. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0438 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438:<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  use Vendor\\Module\\Api\\Data\\SomeModelInterfaceFactory;  class SomeModelRepository {     private $someModelFactory;      \/\/ \u043a\u043b\u0430\u0441\u0441 \\Vendor\\Module\\Api\\Data\\SomeModelInterfaceFactory \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438     public function __construct(SomeModelInterfaceFactory $someModelFactory)     {         $this-&gt;someModelFactory = $someModelFactory;     }      public function doSomething()     {         \/\/ \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430, \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \\Vendor\\Module\\Api\\Data\\SomeModelInterface \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438         $someModel = $this-&gt;someModelFactory-&gt;create();     } }<\/code><\/pre>\n<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0430\u0442\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438 \u043c\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0431\u0443\u0434\u0435\u043c \u043b\u0438 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 &#8212; \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432 Proxy. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c &#171;\\Proxy&#187; \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0438 &#171;Factory&#187; \u043a \u0442\u0438\u043f\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u043d\u043e \u044d\u0442\u043e \u043d\u0430\u0440\u0443\u0448\u0438\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c Proxy \u0447\u0435\u0440\u0435\u0437 di.xml<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Vendor\\Module\\Model;  class SomeModelClass {     private $someBigService;      public function __construct(SomeBigService $someBigService)     {         $this-&gt;someBigService = $someBigService;     }      public function doSomething(bool $condition)     {         \/\/ \u043c\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f, \u0438 \u0442.\u043a. \u0435\u0433\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438         \/\/ \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0442\u043e\u0447\u043d\u043e \u043d\u0443\u0436\u0435\u043d         if ($condition) {             $this-&gt;someBigService-&gt;execute();         }     } }<\/code><\/pre>\n<p>di.xml<\/p>\n<pre><code class=\"xml\">&lt;type name=\"Vendor\\Module\\Model\\SomeModelClass\"&gt;     &lt;arguments&gt;         &lt;argument <\/code><\/pre>\n<\/hr>\n<\/div>\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-315240","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315240","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=315240"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315240\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=315240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=315240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=315240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}