{"id":262354,"date":"2015-07-27T16:35:02","date_gmt":"2015-07-27T12:35:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=262354"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=262354","title":{"rendered":"\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0441 PHPixie 3"},"content":{"rendered":"<p>     \t<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/7cd\/47c\/66c\/7cd47c66c5df9f4b83f7886240a1cba2.png\" alt=\"image\" align=\"right\"\/><br \/>  \u041f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 <a href=\"http:\/\/phpixie.com\">PHPixie<\/a>. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e? \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0442\u0440\u0435\u0445 ORM \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0430\u043b\u044f\u043b\u0438\u0441\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u043f\u044f\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u00ab\u0430\u0430\u0430, \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0434\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u00bb. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0448\u043b\u043e \u043d\u0430 \u0442\u0435\u0441\u0442\u044b, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043e. \u041c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043d\u0435\u0435 \u043c\u043e\u0434\u0443\u043b\u0438. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u044f \u043c\u043e\u0433\u0443 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0437\u043d\u0430\u044e ( \u0438 \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0431\u044b\u043b \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d ). \u0412\u043e\u0442 \u0447\u0435\u043c \u0432\u0430\u0441 \u043f\u043e\u0440\u0430\u0434\u0443\u0435\u0442 PHPixie 3:<\/p>\n<ul>\n<li>\u0421\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c PSR-2 \u0438 PSR-4<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 PSR-7 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438<\/li>\n<li>\u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 PHP, \u043d\u043e \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u0430\u043a \u0443 Twig. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 HAML \u0438\u0442\u0434.<\/li>\n<li>ORM \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u0430\u043a ActiveRecord, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 MongoDB \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u0434 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0442\u044d\u0433\u0430\u043c\u0438 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c) <\/li>\n<li>\u041f\u043e\u0434\u0445\u043e\u0434 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.<\/li>\n<li>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043b\u044e\u0447 languages.en.plural.mouse \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043a \u043a\u043b\u044e\u0447\u0443 plural.mouse \u0432 \u0444\u0430\u0439\u043b\u0435 <i>languages\/en.php<\/i>)<\/li>\n<li>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0430\u043d\u0434\u043b\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043a\u043e\u0434 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0438 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0438\u043c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438. \u0411\u0430\u043d\u0434\u043b\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0435\u0440 \u043a\u0430\u043a \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430.<\/li>\n<\/ul>\n<p>  \u0410 \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u043c \u0432\u0441\u0435 \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441 PHPixie 3:<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  <b>\u0418\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f<\/b> <\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043a\u0435\u043b\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Composer:<\/p>\n<pre><code>php composer.phar create-project phpixie\/project your_project_folder 3.*-dev <\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0432\u0430\u0448 HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043f\u0430\u043f\u043a\u0443 <i>\/web<\/i> directory. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 Nginx \u0432\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<pre><code>location \/ {             try_files $uri $uri\/ \/index.php; } <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Windows \u0432\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a \/web\/bundles\/app \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \/bundles\/app\/web.<br \/>  \u041d\u0430 Linux \u0438 MacOS \u044f\u0440\u043b\u044b\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u041e\u043d \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0435\u0431 \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e \u0431\u0430\u043d\u0434\u043b\u0430 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044e).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0439\u0434\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <a href=\"http:\/\/localhost\/\">localhost<\/a> \u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435.<\/p>\n<p>  <b>\u0411\u0430\u043d\u0434\u043b\u044b<\/b><\/p>\n<p>  PHPixie 3 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0430\u043d\u0434\u043b\u043e\u0432, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 Symfony2. \u0415\u0441\u043b\u0438 \u0432\u044b \u0435\u0449\u0435 \u0441 \u043d\u0438\u043c\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435 \u0447\u0442\u043e \u0441\u0430\u0439\u0442 \u043c\u043e\u0436\u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0447\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u043e\u043c \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 Composer. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043d\u0434\u043b \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438, \u0441\u0442\u0438\u043b\u044f\u043c\u0438 \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0411\u0430\u043d\u0434\u043b\u044b \u00ab\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f\u00bb \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043b\u0438\u043d\u0443\u043a\u0441\u0435 \u0434\u0438\u0441\u043a\u0438 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. <\/p>\n<p>  \u041f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u0435\u0434\u0438\u043d\u044b\u043c \u0431\u0430\u043d\u0434\u043b\u043e\u043c &#8216;app&#8217; \u0432 &#8216;\/bundles\/app&#8217;. \u0418 \u0445\u043e\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0447\u0435\u043c \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439, \u043d\u043e \u043f\u043e\u043a\u0430 \u0443 \u0432\u0430\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0431\u0430\u043d\u0434\u043b \u0432\u044b \u0440\u0435\u0434\u043a\u043e \u0431\u0443\u0434\u0435\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u043d\u0435 \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>  <b>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b<\/b><\/p>\n<p>  \u041f\u0440\u0438\u0432\u044b\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f MVC \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0430 \u0432 PHPixie, \u043e\u043d\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u0418\u0434\u0435\u044f \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u00ab\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u00bb \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d. \u041d\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00ab\u0441\u0443\u0431\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u00bb \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u0435\u043c\u0443 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 ( \u043a\u0430\u043a \u043e\u043d\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f) \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u0435\u0433\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <i>process($request)<\/i>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041a\u043e\u043d\u0435\u0447\u043d\u043e-\u0436\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e-\u0441\u0442\u0430\u0440\u0438\u043d\u043a\u0435, \u0447\u0442\u043e \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <i>Greet<\/i> \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043d\u0430\u043c \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 <i>Quickstart<\/i>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/src\/Project\/App\/HTTPProcessors\/Quickstart.php  namespace Project\\App\\HTTPProcessors;  use PHPixie\\HTTP\\Request;  \/\/  \u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 class Quickstart extends \\PHPixie\\DefaultBundle\\Processor\\HTTP\\Actions {     \/**      * Builder \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0441\u044e\u0434\u0443      * \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0443\u043a\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430      * @var Project\\App\\Builder      *\/     protected $builder;          public function __construct($builder)     {         $this-&gt;builder = $builder;     }          \/\/ \u0414\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435     public function defaultAction(Request $request)     {         return &quot;Quickstart tutorial&quot;;     }          \/\/\u0423\u0436\u0435 \u0441\u043a\u043e\u0440\u043e \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u044e\u0434\u0430 \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0431\u0430\u043d\u0434\u043b\u0430. \u041f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043e\u043d \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0430. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043d\u0438\u0433\u0434\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0438\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0443 \u0438 \u0438\u043c\u0435\u043d\u0438 \u043a\u043b\u0430\u0441\u0441\u0430. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435\u0443\u0434\u043e\u0431\u0435\u043d \u0442\u0435\u043c \u0447\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441 \u0432\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043c\u043a\u0438 \u0441 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043f\u0430\u043f\u043e\u043a. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434-\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u043a\u0430\u043a \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440.<\/p>\n<pre><code class=\"php\"> \/\/ bundles\/app\/src\/Project\/App\/HTTPProcessors.php  \/\/...     protected function buildQuickstartProcessor()     {         return new HTTPProcessors\\Quickstart(             $this-&gt;builder         );     } \/\/... <\/code><\/pre>\n<p>  \u0417\u0430\u0439\u0434\u044f \u043d\u0430 <a href=\"http:\/\/localhost\/quickstart\/\">localhost\/quickstart<\/a> \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u00abQuickstart tutorial\u00bb.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430.<\/p>\n<p>  <b>\u0420\u043e\u0443\u0442\u0438\u043d\u0433<\/b><\/p>\n<p>  \u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u0442\u0438\u043f\u0430 <i>\/quickstart\/view\/4<\/i> \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0435 id \u0438\u043b\u0438 \u0438\u043c\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0442\u043e\u0432\u0430\u0440\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435:<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/src\/Project\/App\/HTTPProcessors\/Quickstart.php  \/\/...     public function viewAction($request)     {         \/\/\u0412\u044b\u0432\u0435\u0434\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 'id'          return $request-&gt;attributes()-&gt;get('id');     }      \/\/... } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441 \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043a \u0442\u0435\u043c \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435. \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/assets\/config\/routeResolver  return array(     \/\/ \u0442\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u0430 \u0440\u043e\u0443\u0442\u043e\u0432     \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f     \/\/ \u043f\u043e\u043a\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442      'type'      =&gt; 'group',     'resolvers' =&gt; array(                  \/\/...\u0432\u043e\u0442 \u0441\u044e\u0434\u0430 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430\u0448\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438                  \/\/\u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0440\u043e\u0443\u0442         'default' =&gt; array(             'type'     =&gt; 'pattern',                          \/\/ \u0441\u043a\u043e\u0431\u043a\u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c             'path'     =&gt; '(&lt;processor&gt;(\/&lt;action&gt;))',                          \/\/\u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b             \/\/\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0435\u0441\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \/greet             \/\/\u0422\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 'action' \u0431\u0443\u0434\u0435\u0442 'default'             'defaults' =&gt; array(                 'processor' =&gt; 'greet',                 'action'       =&gt; 'default'             )         )     ) ); <\/code><\/pre>\n<p>  \u0427\u0430\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"php\">'view' =&gt; array(     'type'     =&gt; 'pattern',          \/\/\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 id \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d     \/\/\u0442\u043e \u0441\u043a\u043e\u0431\u043e\u043a \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u043c     'path'     =&gt; 'quickstart\/view\/&lt;id&gt;',     'defaults' =&gt; array(         'processor' =&gt; 'quickstart',         'action'    =&gt; 'view'     ) ) <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u043e\u0443\u0442\u044b \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u0435\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0431\u044b\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0432\u044b\u0448\u0435 \u0447\u0435\u043c \u043e\u0431\u0449\u0438\u0435.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0439\u0434\u044f \u043d\u0430 <a href=\"http:\/\/localhost\/quickstart\/view\/5\">localhost\/quickstart\/view\/5<\/a> \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 &#8216;5&#8217; \u0432 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u043e\u0443\u0442\u043e\u0432 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u041d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043c \u043e\u043d\u043e \u043d\u0435 \u0432\u0430\u0436\u043d\u043e:<\/p>\n<pre><code class=\"php\">array(          \/\/\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441     'type'      =&gt; 'prefix',          \/\/ \u0423 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d     \/\/ \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438     'pattern'   =&gt; 'user\/&lt;userId&gt;\/',     'resolver' =&gt; array(         'type'      =&gt; 'group',         'resolvers' =&gt; array(                      \/\/\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442 \/user\/5\/friends to Friends::userFriends()             'friends' =&gt; array(                 'pattern'  =&gt; 'friends',                 'defaults' =&gt; array(                     'processor' =&gt; 'friends',                     'action'    =&gt; 'usersFriends'                 )             ),                          \/\/\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442 \/user\/5\/profile to Profile::userProfile()             'profile' =&gt; array(                 'pattern'  =&gt; 'profile',                 'defaults' =&gt; array(                     'processor' =&gt; 'profile',                     'action'    =&gt; 'userProfile'                 )             )         )     ) );  <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 (\u0432\u0435\u0434\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u043e\u043d \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0440\u043e\u0443\u0442\u0430\u0445), \u043d\u043e \u0438 \u0432\u044b\u0438\u0433\u0440\u0430\u0442\u044c \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u0435\u043b \u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0440\u043e\u0443\u0442\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0435\u043c. <\/p>\n<p>  <b>\u0412\u0432\u043e\u0434 \u0438 \u0432\u044b\u0432\u043e\u0434<\/b><\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u043a\u0430\u0436\u0434\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0442\u0432\u0435\u0442. \u0412\u043e\u0442 \u043a\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430:<\/p>\n<pre><code class=\"php\">\/\/$_GET['name']  $request-&gt;query()-&gt;get('name');  \/\/$_POST['name']  $request-&gt;data()-&gt;get('name');  \/\/\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0430 $request-&gt;attributes()-&gt;get('name'); <\/code><\/pre>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435:<\/p>\n<pre><code class=\"php\">$data = $request-&gt;data();  \/\/ \u0421 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f $data-&gt;get('name', 'Trixie');  \/\/ \u0412\u044b\u0431\u0440\u043e\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \/\/ \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 'name' \u043d\u0435 \u0437\u0430\u0434\u0430\u043d $data-&gt;getRequired('name');  \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \/\/ $_POST['users']['pixie']['name'] $data-&gt;get('users.pixie.name');  \/\/ \u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 '\u0440\u0430\u0437\u0440\u0435\u0437\u0430\u0442\u044c' \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b  \/\/ \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u043b\u0433\u0438\u0435 \u043a\u043b\u044e\u0447\u0438 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 $pixie = $data-&gt;slice('users.pixie'); $pixie-&gt;get('name');  \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c $data-&gt;get();  \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u043b\u044e\u0447\u0435\u0439 $data-&gt;keys();  \/\/ \u0410 \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \/\/ \u043a\u0430\u043a \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 foreach($data as $key =&gt; $value) {  }  \/\/ \u041a\u0441\u0442\u0430\u0442\u0438 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \/\/ \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 phpixie\/slice \/\/ \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 <\/code><\/pre>\n<blockquote><p>JSON \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u043e\u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0430\u0440\u0441\u044f\u0442\u044c\u0441\u044f \u0432 $request-&gt;data(), \u0447\u0442\u043e \u0443\u0436\u0435 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 AJAX \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438<\/p><\/blockquote>\n<p>  \u0412\u044b\u0432\u043e\u0434 \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435:<\/p>\n<pre><code class=\"php\">\/\/ \u041f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442 return 'hello';  \/\/ \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u0435\u0441\u0442\u0438 JSON \/\/ \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 return array('success' =&gt; true);  \/\/ \u0418\u043b\u0438 \u0441\u0442\u0440\u043e\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \/\/ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 HTTP $http = $this-&gt;builder-&gt;components()-&gt;http(); $httpResponses = $http-&gt;responses();  \/\/ \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442 return $httpResponses-&gt;redirect('http:\/\/phpixie.com\/');  \/\/ \u0417\u0430\u0434\u0430\u0435\u043c \u0445\u0435\u0434\u0435\u0440\u044b \u0438 \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 return $httpResponses-&gt;stringResponse('Not found', $headers = array(), 404);  \/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0444\u0430\u0439\u043b\u0430 return $httpResponses-&gt;downloadFile('pixie.jpg', 'image\/png', $filePath);  \/\/ \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \/\/ \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f CSV return $httpResponses-&gt;download('report.csv', 'text\/csv', $contents); <\/code><\/pre>\n<h6>\u0428\u0430\u0431\u043b\u043e\u043d\u044b<\/h6>\n<p>  \u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 PHPixie \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0431\u043b\u043e\u043a\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u0434\u0430\u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b.<br \/>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0431\u0430\u043d\u0434\u043b \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 <i>bundles\/app\/assets\/templates<\/i>.<br \/>  \u0412 \u043d\u0435\u0439 \u0443\u0436\u0435 \u043b\u0435\u0436\u0430\u0442 \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c <i>Greet<\/i>. <\/p>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d:<\/p>\n<pre><code class=\"html\">&lt;!-- bundles\/app\/assets\/templates\/quickstart\/message.php --&gt;  &lt;!-- \u0424\u0443\u043d\u043a\u0446\u0438\u044f $_() \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043a\u0430\u043a HTML, \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u044b '&lt;', '&gt;' \u0438 \u0442.\u0434. \u043d\u0435 \u043b\u043e\u043c\u0430\u043b\u0438 \u0432\u0435\u0440\u0441\u0442\u043a\u0443, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 XSS \u0430\u0442\u0430\u043a. --&gt; &lt;p&gt;&lt;?=$_($message)?&gt;&lt;\/p&gt; <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435:<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/src\/Project\/App\/HTTPProcessors\/Quickstart.php  \/\/...     public function renderAction($request)     {         $template = $this-&gt;builder-&gt;components()-&gt;template();                  return $template-&gt;render(             'app:quickstart\/message',             array(                 'message' =&gt; 'hello'             )         );     } \/\/... } <\/code><\/pre>\n<p>  \u0418 \u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <a href=\"http:\/\/localhost\/quickstart\/render\">localhost\/quickstart\/render<\/a><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u0430 \u043d\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d:<\/p>\n<pre><code class=\"php\">$template = $this-&gt;components()-&gt;template();  $container = $template-&gt;get('app:quickstart\/message'); $container-&gt;message = 'hello'; return $container-&gt;render();  \/\/ \u0418\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0441\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \/\/ \u0438 \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f return $container; <\/code><\/pre>\n<h5>\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432<\/h5>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d<\/p>\n<pre><code class=\"php\">&lt;!-- bundles\/app\/assets\/templates\/quickstart\/layout.php --&gt;  &lt;h1&gt;Quickstart&lt;\/h1&gt;  &lt;div&gt;     &lt;!-- \u0422\u0443\u0442 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 --&gt;     &lt;?=$this-&gt;childContent();?&gt; &lt;\/div&gt; <\/code><\/pre>\n<p>  \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u043d\u0430\u0448\u0435\u043c message.php<\/p>\n<pre><code class=\"html\">&lt;!-- bundles\/app\/assets\/templates\/quickstart\/message.php --&gt;  &lt;?php $this-&gt;layout('app:quickstart\/layout');?&gt;  &lt;p&gt;&lt;?=$_($message)?&gt;&lt;\/p&gt; <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"http:\/\/localhost\/quickstart\/render\">localhost\/quickstart\/render<\/a> \u043d\u0430\u0448 \u0448\u0430\u0431\u043b\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u043e\u0431\u0435\u0440\u043d\u0443\u0442 \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439. \u041a\u0441\u0442\u0430\u0442\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439. <\/p>\n<p>  \u0415\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u043b\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430.<\/p>\n<pre><code class=\"php\">&lt;!-- bundles\/app\/assets\/templates\/quickstart\/layout.php --&gt;  &lt;!-- \u041e\u043f\u0438\u0448\u0435\u043c \u0431\u043b\u043e\u043a 'header' --&gt; &lt;?php $this-&gt;startBlock('header'); ?&gt;     &lt;h1&gt;Quickstart&lt;\/h1&gt; &lt;?php $this-&gt;endBlock(); ?&gt;  &lt;!-- \u0418 \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u0435\u0433\u043e --&gt; &lt;?=$this-&gt;block('header') ?&gt;  &lt;div&gt;     &lt;!-- \u0422\u0443\u0442 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 --&gt;     &lt;?=$this-&gt;childContent();?&gt; &lt;\/div&gt; <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u0441 \u043d\u0430\u0448\u0435\u0433\u043e message.php:  <\/p>\n<pre><code class=\"html\">&lt;!-- bundles\/app\/assets\/templates\/quickstart\/message.php --&gt; &lt;?php $this-&gt;layout('app:quickstart\/layout');?&gt;  &lt;?php $this-&gt;startBlock('header'); ?&gt;     &lt;h2&gt;Message&lt;\/h2&gt; &lt;?php $this-&gt;endBlock(); ?&gt;  &lt;p&gt;&lt;?=$_($message)?&gt;&lt;\/p&gt; <\/code><\/pre>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u0431\u043b\u043e\u043a\u0435 \u0438\u0434\u0435\u0442 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0438\u043b\u0435\u0439 \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u043e \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u0431\u043b\u043e\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0433\u043e \u0441\u0430\u043c.<\/p>\n<pre><code class=\"php\">&lt;!-- bundles\/app\/assets\/templates\/quickstart\/layout.php --&gt;  &lt;?php $this-&gt;startBlock('header', true); ?&gt;     &lt;h1&gt;Quickstart&lt;\/h1&gt; &lt;?php $this-&gt;endBlock(); ?&gt;  &lt;!-- ... --&gt; <\/code><\/pre>\n<p>  \u0418\u043b\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0431\u043b\u043e\u043a\u0430 \u0430 \u043d\u0435 \u0432 \u043a\u043e\u043d\u0435\u0446:  <\/p>\n<pre><code class=\"php\">$this-&gt;startBlock('header', false, true); <\/code><\/pre>\n<h5>\u041f\u043e\u0434\u0448\u0430\u0431\u043b\u043e\u043d\u044b<\/h5>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e:<\/p>\n<pre><code class=\"html\">&lt;?php include $this-&gt;resolve('some:template');?&gt; <\/code><\/pre>\n<h5>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0441\u044b\u043b\u043e\u043a<\/h5>\n<p>  \u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <i>httpPath<\/i> \u0438 <i>httpUri<\/i>:<\/p>\n<pre><code class=\"html\">&lt;?php $url=$this-&gt;httpPath(         'app.default',         array(             'processor' =&gt; 'hello',             'action'    =&gt; 'greet'         )     );     ?&gt; &lt;a href=&quot;&lt;?=$_($url)?&gt;&quot;&gt;Hello&lt;\/a&gt; <\/code><\/pre>\n<h4>\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 ORM<\/h4>\n<p>  \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0432\u043d\u0435 \u0431\u0430\u043d\u0434\u043b\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043a MySQL \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"php\">\/\/ assets\/config\/database.php  return array(     'default' =&gt; array(         'driver' =&gt; 'pdo',         'connection' =&gt; 'mysql:host=localhost;dbname=quickstart',         'user'     =&gt; 'pixie',         'password' =&gt; 'pixie'     ) ); <\/code><\/pre>\n<p>  PHPixie \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e \u0438 **MongoDB**.<br \/>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0438 (one-to-one, one-to-many, many-to-many) \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 MongoDB \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 PHP ORM \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u041d\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0440\u0435\u043a\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u0437\u0430\u0434\u0430\u043d\u0438\u0439. \u0421\u0445\u0435\u043c\u0430 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"sql\">CREATE TABLE `projects`(     `id`         INT NOT NULL AUTO_INCREMENT PRIMARY KEY,     `name`       VARCHAR(255),     `tasksTotal` INT DEFAULT 0,     `tasksDone`  INT DEFAULT 0 );  CREATE TABLE `tasks`(     `id`        INT NOT NULL AUTO_INCREMENT PRIMARY KEY,     `projectId` INT NOT NULL,     `name`      VARCHAR(255),     `isDone`    BOOLEAN DEFAULT 0 );  INSERT INTO `projects` VALUES (1, 'Quickstart', 4, 3), (2, 'Build a website', 3, 0);  INSERT INTO `tasks` VALUES (1, 1, 'Installing', 1), (2, 1, 'Routing', 1), (3, 1, 'Templating', 1), (4, 1, 'Database', 0),  (5, 2, 'Design', 0), (6, 2, 'Develop', 0), (7, 2, 'Deploy', 0); <\/code><\/pre>\n<p>  \u0418 \u043c\u044b \u0443\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ORM \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u0442\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 <i>orm<\/i> \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440:<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/src\/Project\/App\/HTTPProcessors\/Quickstart.php  \/\/...     public function ormAction(Request $request)     {         $orm = $this-&gt;builder-&gt;components-&gt;orm();                  $projects = $orm-&gt;query('project')-&gt;find();                  \/\/ \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438         \/\/ \u0432 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.         \/\/ \u041a\u0430\u043a \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c, \u0435\u0441\u043b\u0438         \/\/ \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0442\u043e \u043e\u043d\u0438         \/\/ \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 JSON         return $projects-&gt;asArray(true);     } \/\/... <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0439\u0434\u044f \u043d\u0430 <a href=\"http:\/\/localhost\/quickstart\/orm\">localhost\/quickstart\/orm<\/a> \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 JSON \u043e\u0442\u0432\u0435\u0442 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<br \/>  \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0433\u043b\u0443\u0431\u0436\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u043e\u0439 ORM \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u0432\u044f\u0437\u044c \u043e\u0434\u0438\u043d-\u043a\u043e-\u043c\u043d\u043e\u0433\u0438\u043c <br \/>  \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u0438\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438.<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/assets\/config\/orm.php  &lt;?php  return array(     'relationships' =&gt; array(         array(             'type'  =&gt; 'oneToMany',             'owner' =&gt; 'project',             'items' =&gt; 'task',                          \/\/ \u041f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432             \/\/ \u0441\u0440\u0430\u0437\u0443 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u044f             'itemsOptions' =&gt; array(                 'onOwnerDelete' =&gt; 'delete'             )         )     ) ); <\/code><\/pre>\n<h5>\u0421\u0443\u0449\u043d\u043e\u0441\u0442\u0438<\/h5>\n<p>  \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e:<\/p>\n<pre><code class=\"php\">$orm = $this-&gt;builder-&gt;components-&gt;orm();  \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0435\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 $projectRepository = $orm-&gt;repository('project'); $project = $projectRepository-&gt;create();  \/\/ \u0438\u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434  $project = $orm-&gt;createEntity('project');  \/\/ \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 $project-&gt;name = 'Buy Groceries'; $project-&gt;save();  $task = $orm-&gt;createEntity('task'); $task-&gt;name = 'Milk'; $task-&gt;save();  \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 $project-&gt;tasks-&gt;add($task);  \/\/ \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 $project-&gt;delete();  \/\/ \u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430\u0445 $projects = $orm-&gt;query('project')-&gt;find(); foreach($projects as $project) {     foreach($project-&gt;tasks() as $task) {         \/\/...     } } <\/code><\/pre>\n<p>  ### \u0417\u0430\u043f\u0440\u043e\u0441\u044b<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0441\u0442\u044c \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441 ORM \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438:<\/p>\n<pre><code class=\"php\">$orm = $this-&gt;builder-&gt;components-&gt;orm();  \/\/ \u041d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 $orm-&gt;query('project')-&gt;where('name', 'Quickstart')-&gt;findOne();  \/\/ \u041d\u0430\u0439\u0442\u0438 \u043f\u043e id $orm-&gt;query('project')-&gt;in($id)-&gt;findOne();  \/\/ \u041d\u0430\u0439\u0442\u0438 \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 id $orm-&gt;query('project')-&gt;in($ids)-&gt;findOne();  \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 $orm-&gt;query('project')     -&gt;where('tasksTotal', '&gt;', 2)     -&gt;or('tasksDone', '&lt;', 5)     -&gt;find();      \/\/ \u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \/\/WHERE name = 'Quickstart' OR ( ... ) $orm-&gt;query('project')     -&gt;where('name', 'Quickstart')     -&gt;or(function($query) {         $querty             -&gt;where('tasksTotal', '&gt;', 2)             -&gt;or('tasksDone', '&lt;', 5);     })     -&gt;find();  \/\/ \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 $orm-&gt;query('project')     -&gt;where('name', 'Quickstart')     -&gt;startWhereConditionGroup('or')         -&gt;where('tasksTotal', '&gt;', 2)         -&gt;or('tasksDone', '&lt;', 5)     -&gt;endGroup()     -&gt;find();      \/\/ \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0431\u0430\u0437\u0435, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 '*' \u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \/\/ \u041d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 tasksTotal = tasksDone $orm-&gt;query('project')     -&gt;where('tasksTotal', '=*', 'tasksDone')     -&gt;find();  \/\/ \u041d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c $orm-&gt;query('project')     -&gt;relatedTo('task')     -&gt;find();      \/\/ \u041d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c $orm-&gt;query('project')     -&gt;where('tasks.name', 'Routing')     -&gt;findOne();  \/\/ \u0418\u043b\u0438 \u0442\u0430\u043a $orm-&gt;query('project')     -&gt;orRelatedTo('task', function($query) {         $query-&gt;where('name', 'Routing');     })     -&gt;findOne();  \/\/ \u041f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \/\/ \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 (eager loading)  $orm-&gt;query('project')-&gt;find(array('task'));  \/\/ \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 $orm-&gt;query('project')-&gt;update(array(     'tasksDone' =&gt; 0 ));  \/\/ \u041f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \/\/ \u0438 \u043f\u043e\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0442\u0435\u043c \u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \/\/ \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b $query = $orm-&gt;query('project')     -&gt;where('tasksTotal', '=*', 'tasksDone');      $count = $query-&gt;count();  $query     -&gt;limit(5)     -&gt;offset(0)     -&gt;find(); <\/code><\/pre>\n<p>  PHPixie ORM \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0431\u0430\u0437\u0435.<br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c:<\/p>\n<pre><code class=\"php\">$orm = $this-&gt;builder-&gt;components-&gt;orm();  \/\/ \u0417\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 $projectQuery = $orm-&gt;query('project')     -&gt;where('name', 'Quickstart');  \/\/ \u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0432\u044b\u0435 5 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 $tasksQuery = $orm-&gt;query('task')-&gt;limit(5);  \/\/ \u041a \u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a \u0431\u0430\u0437\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e  \/\/ \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0432\u044f\u0436\u0435\u043c \u0438\u0437 \u0432\u043c\u0435\u0441\u0442\u0435 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c $projectQuery-&gt;tasks-&gt;add($tasksQuery); <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0440\u0435\u0437\u043a\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0432\u044f\u0437\u044f\u043c\u0438 \u043c\u043d\u043e\u0433\u0438\u0435-\u043a\u043e-\u043c\u043d\u043e\u0433\u0438\u043c. \u041a\u0430\u043a \u0438 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MongoDB, \u043d\u0438\u043a\u0430\u043a\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f ORM \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442.<\/p>\n<h5>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439<\/h5>\n<p>  \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u0412 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0445 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u0435\u0441\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 \u0441 \u0441\u0430\u043c\u043e\u0439 ORM \u0438 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. PHPixie \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0432\u0440\u0430\u043f\u043f\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043a\u043e\u0440\u0438\u0440\u0443\u044e\u0442 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b \u043e\u0442 ORM. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u0442\u0435\u0441\u0442\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0435\u0433\u0447\u0435 \u0438 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0439 \u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0432\u0440\u0430\u043f\u043f\u0435\u0440:<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/src\/Project\/App\/ORMWrappers\/Project.php;  namespace Project\\App\\ORMWrappers;  class Project extends \\PHPixie\\ORM\\Wrappers\\Type\\Database\\Entity {     \/\/ \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c     \/\/ \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u043b\u0438 \u043d\u0435\u0442     public function isDone()     {         return $this-&gt;tasksDone === $this-&gt;tasksTotal;     } } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u0431\u0430\u043d\u0434\u043b\u0435:<\/p>\n<pre><code class=\"php\">\/\/ bundles\/app\/src\/Project\/App\/ORMWrappers.php; namespace Project\\App;  class ORMWrappers extends \\PHPixie\\ORM\\Wrappers\\Implementation {     \/\/ \u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u0435\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0432\u0440\u0430\u043f\u043f\u0435\u0440\u044b     protected $databaseEntities = array(         'project'     );          \/\/ \u0418 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0433\u043e \u0441\u0442\u0440\u043e\u0438\u0442     public function projectEntity($entity)     {         return new ORMWrappers\\Project($entity);     } } <\/code><\/pre>\n<p>  \u0412\u0441\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"php\">\/\/Find the first project $project = $orm-&gt;query('project')-&gt;findOne();  \/\/Check if it is done $project-&gt;isDone(); <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0432\u0440\u0430\u043f\u043f\u0435\u0440\u044b \u0434\u043b\u044f \u0417\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0439.<\/p>\n<h4>\u0415\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435!<\/h4>\n<p>  \u041a\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <a href=\"https:\/\/github.com\/phpixie\/demo-quickstart\">\u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>. \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c <a href=\"https:\/\/github.com\/phpixie\/demo-todo\">\u0434\u0435\u043c\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0442\u0440\u0435\u043a\u0435\u0440 \u0437\u0430\u0434\u0430\u043d\u0438\u0439.<\/p>\n<p>  <b>\u041c\u0435\u043d\u044f \u0438 \u0442\u0430\u043a \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e !<\/b><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0430\u043d\u0434\u043b\u043e\u0432, \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0432\u0430\u043c \u043b\u0438\u0448\u043d\u0438\u043c\u0438, \u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0442\u043e \u043d\u0435 \u043f\u0443\u0433\u0430\u0439\u0442\u0435\u0441\u044c, \u0432\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434:<\/p>\n<ul>\n<li>\u0417\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043e\u0431\u043e \u0432\u0441\u0435\u043c \u0432\u043d\u0435 \u043f\u0430\u043f\u043a\u0438 \/bundles\/app\/<\/li>\n<li>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u0430\u043d\u0434\u043b\u044b \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442\u0435, \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u044f\u0440\u043b\u044b\u043a \u0432 \u043f\u0430\u043f\u043a\u0435 \/web, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u0435\u043b\u043e \u043a\u0438\u0434\u0430\u0439\u0442\u0435 \u0432 \u043d\u0435\u0435 \u0432\u0430\u0448\u0438 \u0432\u0435\u0431-\u0444\u0430\u0439\u043b\u044b \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u0438 \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u0430\u043d\u0434\u043b\u0430\u043c\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \/web \u0432 \/bundles\/app\/web. \u0410 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0439\u0442\u0435\u0441\u044c.<\/li>\n<li>\u0427\u0443\u0442\u044c \u0447\u0443\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438:<\/li>\n<\/ul>\n<p>  \u0414\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u0441\u0442\u0440\u043e\u0438\u043b\u0438\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0443, \u0431\u0435\u0437 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0432 HTTPProcessor:  <\/p>\n<pre><code class=\"php\">\/\/ \/bundles\/app\/src\/Project\/App\/HTTPProcessor.php  namespace Project\\App; class HTTPProcessor extends \\PHPixie\\DefaultBundle\\Processor\\HTTP\\Builder {     protected $builder;     protected $attribute = 'processor';          public function __construct($builder)     {         $this-&gt;builder = $builder;     }          public function processor($name)     {         if(!array_key_exists($name, $this-&gt;processors)) {             $class = '\\Project\\App\\HTTPProcessors\\\\'.ucfirst($name);             if(!class_exists($class)) {                 return null;             }             $this-&gt;processors[$name] = new $class($this-&gt;builder);         }                  return $this-&gt;processors[$name];     } } <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u044b before() \u0438 after(), \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445. \u041a\u0430\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043e\u043d\u0443\u0441, \u0435\u0441\u043b\u0438 before() \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435:<\/p>\n<pre><code class=\"php\">\/\/ \/bundles\/app\/src\/Project\/App\/HTTPProcessors\\Controller.php  namespace Project\\App\\HTTPProcessors;  asbtarct class Controller extends \\PHPixie\\DefaultBundle\\Processor\\HTTP\\Actions {     protected $builder;     protected $attribute = 'processor';          public function __construct($builder)     {         $this-&gt;builder = $builder;     }         public functon process($request)    {       $result = $this-&gt;before($request);       if($result !== null) {          return $result;       }              $result = parent::process($request);              return $this-&gt;after($request, $result);    }        public function before($request) {        }        public function after($request, $result) {       return $result;    }  } <\/code><\/pre>\n<h4>\u041a\u043e\u043d\u0435\u0446<\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u0441\u0435 \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 PHPixie 3, \u043d\u043e \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u043d\u0430 \u0441\u0430\u0439\u0442\u0435, \u0442\u0430\u043a \u0438 \u0442\u0443\u0442 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435. \u0423 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0440\u0443\u0441\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0437\u0434\u0435\u0441\u044c. \u0412\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, <a href=\"http:\/\/phpixie.com\/coverage\/\">\u043f\u043e\u043a\u0440\u044b\u0442\u044b \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u043d\u0430 100%<\/a>, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0442 <a href=\"https:\/\/codeclimate.com\/github\/PHPixie\/\">\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0435\u0442\u0440\u0438\u043a\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430 CodeClimate<\/a>.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438 \u0441\u0430\u0439\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0442\u043e\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f, \u0441 \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c \u0442\u0438\u043c \u043b\u0438\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430 \u043d\u0435\u043c. \u0410 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u0435\u0449\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0442\u043e \u043c\u0435\u043d\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432 <a href=\"https:\/\/gitter.im\/PHPixie\/Hotline\">\u043d\u0430\u0448\u0435\u043c \u0447\u0430\u0442\u0435<\/a>.     \t<\/p>\n<div class=\"clear\"><\/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=\"http:\/\/habrahabr.ru\/post\/263551\/\"> http:\/\/habrahabr.ru\/post\/263551\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/7cd\/47c\/66c\/7cd47c66c5df9f4b83f7886240a1cba2.png\" alt=\"image\" align=\"right\"\/><br \/>  \u041f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 <a href=\"http:\/\/phpixie.com\">PHPixie<\/a>. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e? \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0442\u0440\u0435\u0445 ORM \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0430\u043b\u044f\u043b\u0438\u0441\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u043f\u044f\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u00ab\u0430\u0430\u0430, \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0434\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u00bb. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0448\u043b\u043e \u043d\u0430 \u0442\u0435\u0441\u0442\u044b, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043e. \u041c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043d\u0435\u0435 \u043c\u043e\u0434\u0443\u043b\u0438. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u044f \u043c\u043e\u0433\u0443 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0437\u043d\u0430\u044e ( \u0438 \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0431\u044b\u043b \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d ). \u0412\u043e\u0442 \u0447\u0435\u043c \u0432\u0430\u0441 \u043f\u043e\u0440\u0430\u0434\u0443\u0435\u0442 PHPixie 3:<\/p>\n<ul>\n<li>\u0421\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c PSR-2 \u0438 PSR-4<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 PSR-7 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438<\/li>\n<li>\u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 PHP, \u043d\u043e \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u0430\u043a \u0443 Twig. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 HAML \u0438\u0442\u0434.<\/li>\n<li>ORM \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u0430\u043a ActiveRecord, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 MongoDB \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u0434 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0442\u044d\u0433\u0430\u043c\u0438 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c) <\/li>\n<li>\u041f\u043e\u0434\u0445\u043e\u0434 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.<\/li>\n<li>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043b\u044e\u0447 languages.en.plural.mouse \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043a \u043a\u043b\u044e\u0447\u0443 plural.mouse \u0432 \u0444\u0430\u0439\u043b\u0435 <i>languages\/en.php<\/i>)<\/li>\n<li>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0430\u043d\u0434\u043b\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043a\u043e\u0434 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0438 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0438\u043c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438. \u0411\u0430\u043d\u0434\u043b\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0435\u0440 \u043a\u0430\u043a \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430.<\/li>\n<\/ul>\n<p>  \u0410 \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u043c \u0432\u0441\u0435 \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441 PHPixie 3:  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-262354","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262354","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=262354"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262354\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=262354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=262354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=262354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}