{"id":197524,"date":"2013-10-15T10:58:03","date_gmt":"2013-10-15T06:58:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=197524"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=197524","title":{"rendered":"<span class=\"post_title\">Symfony CMF. \u0427\u0430\u0441\u0442\u044c 1, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/c1b\/f41\/bac\/c1bf41bace6a77852b5be0209c726b95.png\" alt=\"image\" align=\"left\"\/><\/p>\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u044f<\/h4>\n<p>  \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e \u043d\u0430 <a href=\"http:\/\/yiiframework.com\">Yii<\/a> \u0443\u0436\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b \u0437\u0430\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 Symfony Framework 2. \u041e\u0442\u0447\u0430\u0441\u0442\u0438 \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u0441\u043b\u0430\u0431\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430 \u043d\u0435\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c CMS, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0434\u0430\u0436\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0439.<\/p>\n<p>  \u041a\u043e\u0440\u043e\u0431\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438, \u043e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044f \u0437\u0430\u0431\u0440\u0435\u043b \u043d\u0430 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Symfony CMF \u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u0440\u0430\u0436\u0435\u043d \u043d\u0430\u043f\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434\u0438\u0447\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0442\u0435\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0432 \u0431\u044b\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043a\u043e\u043d\u0432\u0435\u0435\u0440\u0435 \u043f\u043e \u043d\u0430\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u044e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0414\u0440\u0443\u043f\u0430\u043b. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u0440\u043e \u0438\u043c\u0435\u043d\u043d\u043e CMF \u043d\u0435\u0442, \u0434\u0430 \u0438 \u0441\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0435\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u044b\u0440\u043e\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0445\u043e\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0438 \u0435\u0441\u0442\u044c \u043a \u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u0434\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<h4>Symfony CMF<\/h4>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442 <a href=\"http:\/\/cmf.symfony.com\">Symfony CMF<\/a> \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u043f\u0440\u0438\u0441\u0443\u0449\u0435\u0433\u043e CMS, \u0434\u043b\u044f \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 Symfony Framework 2.<br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<ul>\n<li>\u0441\u043b\u0430\u0431\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432<\/li>\n<li>\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c<\/li>\n<li>\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e<\/li>\n<li>\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c<\/li>\n<\/ul>\n<p>  \u0421\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043a\u0446\u0435\u043d\u0442 \u043d\u0430 \u0441\u043b\u043e\u0432\u0435 <strong>CMF<\/strong> \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f CMS \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435, \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e <strong>\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a<\/strong>. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 CMS, \u0433\u0434\u0435 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0435, \u0432 Symfony CMF \u0432\u044b:<\/p>\n<ul>\n<li>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u0441\u0435, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f<\/li>\n<li>\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f<\/li>\n<li>\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0435 \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/li>\n<\/ul>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c, \u0432\u0430\u043c \u0434\u0430\u043d \u043d\u0430\u0431\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u043f\u043e\u0434 \u043a\u043b\u044e\u0447\u00bb, \u0445\u043e\u0442\u044f \u0443\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0431\u0430\u043d\u0434\u043b\u044b, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0435 CMS-\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0417\u0430\u0447\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d CMF?<\/h4>\n<p>  \u041d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432, \u043a\u0430\u043a \u043f\u043b\u0430\u0442\u043d\u044b\u0445 (1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441, UMI), \u0442\u0430\u043a \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 (Drupal, MODx, WordPress, Joomla). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u0438\u0434\u0435 \u043d\u0430\u0434\u043f\u0438\u0441\u0438 <em>Whatever CMS\/CMF<\/em> \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 <strong>\u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 CMS? \u0418\u0445 \u0436\u0435 \u0438 \u0442\u0430\u043a \u043f\u043e\u043b\u043d\u043e.<\/strong><br \/>  \u0418 \u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d. \u041a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c.<\/p>\n<p>  CMS \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0443\u0434-\u043f\u0440\u0443\u0434\u0438. \u041d\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u044f \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u043b\u0438\u0432\u0430\u043b \u043f\u043e\u0442, \u043a\u0440\u043e\u0432\u044c \u0438 \u0441\u043b\u0435\u0437\u044b, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0438\u0445 \u0447\u0435\u0433\u043e-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e, \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u0435 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430\u043c\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0418\u0437-\u0437\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441:<\/p>\n<ul>\n<li>\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0432\u043d\u044f\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 Drupal \u2014 \u043a\u0443\u0447\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u043c\u0435\u0448\u0430\u043d\u0438\u043d\u0430 \u0438\u0437 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0430\u043a \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0445 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0445\u0443\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e. \u0412\u043e\u0442 \u043a\u0441\u0442\u0430\u0442\u0438 <a href=\"http:\/\/odino.org\/why-we-choose-symfony2-over-any-other-php-framework\/\">\u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f<\/li>\n<li>\u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0433\u0430\u0441\u0438-\u043a\u043e\u0434\u0430, \u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e, \u043e\u0431\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u044f\u0434\u0440\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0440\u0430\u0434\u043e\u0441\u0442\u0438, \u043d\u043e \u043f\u043e\u043a\u0430 \u043d\u043e\u0432\u0430\u044f (\u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f) \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043e \u0441\u0442\u0430\u0434\u0438\u0438 \u00ab\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f\u00bb, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e<\/li>\n<li>\u0447\u0430\u0441\u0442\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u0441\u0443\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043a\u0430\u043a development, testing, \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0434\u0435\u043f\u043b\u043e\u044f<\/li>\n<li>\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0413\u0434\u0435-\u0442\u043e \u0435\u0433\u043e \u043d\u0435\u0442, \u0433\u0434\u0435-\u0442\u043e \u043e\u043d\u043e \u0435\u0441\u0442\u044c, \u043d\u043e \u043d\u0435 \u0434\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u0443\u044e \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438, \u0438\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0435\u0439, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043d \u043d\u0435 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0438 \u0442. \u0434.<\/li>\n<li>\u043d\u0438\u0437\u043a\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435) \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n<li>\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445<\/li>\n<li>\u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043b\u0438\u0431\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\u0441\u044f EAV-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u043c\u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0421\u0423\u0411\u0414, \u043b\u0438\u0431\u043e \u0435\u0449\u0435 \u0447\u0442\u043e \u043f\u043e\u0445\u0443\u0436\u0435<\/li>\n<li>\u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u044b-\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\u043c\u0438 CMS &#8230;<\/li>\n<li>\u2026 \u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0441\u0438\u043d\u0434\u0440\u043e\u043c\u0430 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Not_invented_here\">NIH<\/a>.<\/li>\n<\/ul>\n<p>  \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044d\u0442\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0432 \u043a\u0443\u0440\u0441\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u0438 \u043d\u0435 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u044e\u0442 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u0432\u0438\u043d\u0435\u043d\u0438\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0440\u044f\u0434, \u043b\u0443\u0447\u0448\u0435 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u0440\u044f\u0434 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 CMS \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0448\u0430\u0442\u044c \u0432 \u0443\u0433\u043e\u0434\u0443 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0440\u0435\u0448\u0435\u043d\u044b \u0432 Symfony CMF. \u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ul>\n<li>\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n<li>\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432<\/li>\n<li>\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0427\u041f\u0423, \u0438 \u0442\u043e, \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/li>\n<li>\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0435\u043d\u044e<\/li>\n<li>\u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442 (\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u0441\u0430\u0439\u0442\u0435, \u0437\u0430\u043b\u0438\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432)<\/li>\n<li>i18n<\/li>\n<li>\u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0430<\/li>\n<\/ul>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>  \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u044f CMS, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f CMS \u2014\u00a0\u044d\u0442\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u0430\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u2014 <em>CMS \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/em>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0442\u0438\u043f\u0430 BlogPost \u0438\u043b\u0438 NewsItem \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u043f\u043e\u043b\u044f <code>title<\/code> \u0438 <code>body<\/code>, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0439\u0434\u0443\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u2014 \u043a \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/p>\n<p>  \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d. \u0427\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445? \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u2014 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u043e\u0432. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e, \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0445\u043e\u0442\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0431\u0430 \u0434\u0440\u0443\u0433 \u0431\u0435\u0437 \u0434\u0440\u0443\u0436\u043a\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443\u0442. \u041e\u0442\u0441\u044e\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435: <em>CMS \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043a\u0430\u043a \u0432\u043d\u0443\u0442\u0440\u0438 CMS, \u0442\u0430\u043a \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/em>.<\/p>\n<p>  \u0421\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d \u0432 \u0432\u0438\u0434\u0435 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0432 \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0435\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0410\u0432\u0442\u043e\u0440\u044b \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0445\u043e\u0442\u044f\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0433\u0438\u0431\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e \u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, <em>CMS \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<\/em> \u0438 <em>\u0443\u043c\u0435\u0442\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/em>.<\/p>\n<p>  \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0437\u0430\u0431\u0438\u0432\u0430\u044e\u0442 \u0432 CMS, \u0440\u0435\u0434\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439. \u041f\u043e\u0440\u043e\u0439, \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u043e, \u0434\u0440\u0443\u0433\u043e\u0435, \u0442\u0440\u0435\u0442\u044c\u0435, \u0434\u0435\u0441\u044f\u0442\u043e\u0435 \u043f\u043e\u043b\u0435 \u2014\u00a0<em>CMS \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/em> \u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435, <em>\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443<\/em>.<\/p>\n<p>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f\u0445 \u043d\u0435\u0440\u0435\u0434\u043a\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430\u043f\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u2014\u00a0<em>CMS \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438<\/em>. \u0410 \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e <em>\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0440\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d \u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432. \u0425\u043e\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0430\u0439\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u044f\u0437\u044b\u043a \u043d\u0438\u043a\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, <em>CMS \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0441 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u043e\u043b\u043b\u0431\u0435\u043a\u043e\u043c \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c<\/em>.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <em>\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u0438\u0441\u043a<\/em>, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c <em>\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c<\/em>, \u0438 <em>\u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0430\u0432\u0442\u043e\u0440\u0430\u043c\u0438<\/em> (\u0432\u043e\u0440\u043a\u0444\u043b\u043e\u0443 \u0443 \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u043d\u044b\u0439).<\/p>\n<h5>Content Repository<\/h5>\n<p>  \u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u043e\u0434\u043d\u0438\u043c \u00ab\u043c\u0443\u0441\u043a\u0443\u043b\u043e\u043c\u00bb \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u0430\u0435\u0448\u044c\u0441\u044f. \u0420\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u044f\u0442\u0441\u044f, \u0445\u043e\u0442\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0442\u0438\u043f\u0430 Materialized path \u0438\u043b\u0438 Nested set, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0433\u0440\u0430\u0444\u0430. \u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043e\u043d\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u0430 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u043a\u0443, \u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u043f\u043b\u043e\u0445\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043b\u0438\u0448\u0430\u0435\u0442 \u043d\u0430\u0441 \u0441\u0432\u043e\u0431\u043e\u0434\u044b \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. \u0420\u0421\u0423\u0411\u0414 \u0432\u0438\u043d\u0438\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e \u2014 \u043e\u043d\u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u044b \u0434\u043b\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0438\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0438\u043c \u043d\u0443\u0436\u043d\u044b \u0447\u0435\u0442\u043a\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u043d\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u0441\u043b\u0430\u0431\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0441\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u2014\u00a0\u0432\u0435\u0434\u044c \u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u0438\u043b\u0438 <strong>\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/strong>, \u0435\u0441\u043b\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0440\u0436\u0443\u0439\u0441\u043a\u0438\u0439. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u044b \u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0447\u0442\u0435\u043d\u0438\u044e, \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0443\u0436\u043d\u044b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0430\u043a\u0446\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h5>JCR-170<\/h5>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0449\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u0434\u0432\u0443\u0445\u0442\u044b\u0441\u044f\u0447\u043d\u044b\u0445 \u043b\u044e\u0434\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Day Software (\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 David N\u00fcscheler) \u043f\u043e\u0434\u0430\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 Java Community Process \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 <a href=\"http:\/\/www.jcp.org\/en\/jsr\/detail?id=170\">Content Repository API for Java (JCR)<\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 170. \u041f\u043e\u0437\u0434\u043d\u0435\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u043f\u043e\u0434 \u043d\u043e\u043c\u0435\u0440\u043e\u043c JSR-283 (2.0), JSR-333 (2.1, \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d 31 \u0430\u0432\u0433\u0443\u0441\u0442\u0430), \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0447\u0430\u0449\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>  \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u0438\u0441\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 API \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0438\u043c\u043f\u043e\u0440\u0442\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 XML, \u0430 \u0435\u0449\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0443\u0437\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0438\u0445, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438 \u0447\u0438\u0441\u043b\u0430, \u0438 \u0441\u0442\u0440\u043e\u043a\u0438, \u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b. \u0423\u0437\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0438\u043f\u044b, \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0443\u0437\u043b\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 (\u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b).<\/p>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0447\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0439, \u0447\u0435\u043c \u0438\u0445 XPath-\u0441\u043e\u0431\u0440\u0430\u0442\u044c\u044f \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438.<\/p>\n<p>  \u041a\u0430\u043a \u044f\u0440\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0441\u0447\u0430\u0441\u0442\u044c\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"http:\/\/jackrabbit.apache.org\/\">Apache Jackrabbit<\/a>, \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Java. \u041f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0445 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u043a\u0443\u0441\u043d\u043e\u0441\u0442\u0435\u0439, \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 (\u043d\u0430\u0447\u0430\u0442\u044b\u0439 \u0435\u0449\u0435 \u0432 2004 \u0433\u043e\u0434\u0443 \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f JCR API) \u0443\u043c\u0435\u0435\u0442 \u0433\u0438\u0431\u043a\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443. \u0415\u0449\u0435 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u043d\u0433, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u043d\u043e \u043d\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c.<\/p>\n<h5>PHPCR<\/h5>\n<p>  \u041d\u043e \u0432\u0435\u0434\u044c \u043d\u0435 \u0432\u0441\u0435 \u043f\u0438\u0448\u0443\u0442 \u043d\u0430 Java! (\u041e\u043f\u0443\u0441\u0442\u0438\u043c \u0448\u0443\u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443)<br \/>  \u0414\u043b\u044f \u0442\u0430\u043a\u0438\u0445, \u043a\u0430\u043a \u043c\u044b, \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d <a href=\"http:\/\/phpcr.github.com\/\">Content Repository for PHP<\/a> \u2014 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 JCR API, \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 \u0441\u0442\u0438\u043b\u044c PHP. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e API \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d, \u0441\u043b\u0435\u0434\u0443\u0435\u0442: \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434\u044b (\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e).<br \/>  \u0412\u0430\u0436\u043d\u044b\u0439 \u043f\u043b\u044e\u0441 \u2014 \u043c\u044b \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u043c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 (\u0432\u0435\u0434\u044c \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 CMS \u0443\u0436\u0435 \u0440\u0435\u0448\u0435\u043d\u0430).<br \/>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0430 \u043d\u0435 \u043c\u043e\u0433\u043b\u0430 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u2014\u00a0\u0414\u044d\u0432\u0438\u0434 <a href=\"https:\/\/java.net\/jira\/browse\/JSR_333-28\">\u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0437\u0430\u043f\u0440\u043e\u0441<\/a> \u043d\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 PHPCR \u0432 JCR 2.1. \u041e\u0447\u0435\u043d\u044c \u043c\u0438\u043b\u043e.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c API \u0438\u0437 Java \u0432 PHP, \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u0432\u0441\u0435 \u0436\u0435 \u0435\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e PHP \u0441\u043b\u0430\u0431\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u043b\u0438 \u0437\u0430 \u043d\u0435\u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e, \u0430 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430, \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u044b <a href=\"https:\/\/github.com\/phpcr\/phpcr\/blob\/master\/doc\/JCR_TO_PHPCR.txt\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e \u0442\u0430\u043c \u043d\u0435\u0442.<\/p>\n<p>  \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 PHPCR \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0435\u0440\u0435\u0432\u0443<\/li>\n<li>\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u0437\u043b\u0430\u043c \u043f\u043e UUID<\/li>\n<li>\u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0443\u0437\u043b\u0430\u043c<\/li>\n<li>\u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c<\/li>\n<li>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439<\/li>\n<li>\u0418\u043c\u043f\u043e\u0440\u0442 \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 XML<\/li>\n<li>\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438<\/li>\n<li>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438*<\/li>\n<li>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/li>\n<li>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430*<\/li>\n<li>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/li>\n<\/ul>\n<p>  (*) \u2014\u00a0\u0415\u0449\u0435 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 Jackalope-Jackrabbit (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435), \u0445\u043e\u0442\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0433\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0442\u044c.<\/p>\n<p>  <strong>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 PHPCR<\/strong>:<\/p>\n<ul>\n<li>\u0432\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0443\u0437\u043b\u043e\u0432<\/li>\n<li>\u0443 \u0443\u0437\u043b\u043e\u0432 \u0435\u0441\u0442\u044c \u0438\u043c\u044f \u0438 \u0442\u0438\u043f<\/li>\n<li>\u0443 \u0443\u0437\u043b\u043e\u0432 \u0435\u0441\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u044b\u0435 \u0443\u0437\u043b\u044b \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/li>\n<li>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u0430, \u0441\u0442\u0440\u043e\u043a\u0438, \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0437\u043b\u044b<\/li>\n<\/ul>\n<p>  \u0413\u0434\u0435-\u0442\u043e \u043c\u044b \u0443\u0436\u0435 \u044d\u0442\u043e \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438?<\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 (\u0441\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e):<\/p>\n<pre><code class=\"xml\">&lt;root&gt;&lt;cms&gt;&lt;pages&gt;&lt;home title=&quot;Hello&quot;&gt;&lt;block title=&quot;News&quot; content=&quot;Today: PHPCR presentation&quot;&gt;&lt;\/block&gt;&lt;\/home&gt;&lt;contact title=&quot;Contact&quot; content=&quot;phpcr-users@groups.google.com&quot;&gt;&lt;\/contact&gt;&lt;\/pages&gt;&lt;\/cms&gt;&lt;\/root&gt;<\/code><\/pre>\n<p>  \u041f\u043e\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0432\u0435\u0440\u0445\u044a\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e.<br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u0441 \u0447\u0435\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<h6>\u0423\u0437\u043b\u044b<\/h6>\n<p>  <\/p>\n<ul>\n<li>\u0443\u0437\u0435\u043b \u2014\u00a0\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c<\/li>\n<li>\u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 XML-\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b<\/li>\n<li>\u0443\u0437\u043b\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/li>\n<li><em>\u043f\u0443\u0442\u044c<\/em> \u043a \u0443\u0437\u043b\u0443 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043f\u0443\u0442\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0438 \u0438\u043c\u0435\u043d\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430:<\/li>\n<li>\u041f\u0443\u0442\u044c: \/cms\/pages\/home<\/li>\n<li>\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c: \/cms\/pages<\/li>\n<li>\u0418\u043c\u044f \u0443\u0437\u043b\u0430: home<\/li>\n<\/ul>\n<p>  <\/p>\n<h6>\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0437\u043b\u043e\u0432<\/h6>\n<p>  <\/p>\n<ul>\n<li>\u0443 \u0443\u0437\u043b\u043e\u0432 \u0435\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/li>\n<li>\u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 XML-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b<\/li>\n<li>\u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445: STRING, URI, BOOLEAN, LONG, DOUBLE, DECIMAL, BINARY, DATE, NAME, PATH, WEAKREFERENCE, REFERENCE<\/li>\n<li>\u0442\u0438\u043f\u044b (WEAK)REFERENCE \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0437\u043b\u044b<\/li>\n<li>\u0443\u0437\u043b\u044b \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d: <code>jcr:created<\/code>, <code>jcr:mimeType<\/code>, <code>phpcr:class<\/code>  <\/li>\n<\/ul>\n<p>  <\/p>\n<h6>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0443\u0437\u043b\u043e\u0432<\/h6>\n<p>  <\/p>\n<ul>\n<li>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0438\u043f\u044b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0443\u0437\u043b\u043e\u0432<\/li>\n<li>\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0438\u043f<\/li>\n<li>\u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f-\u0447\u0435\u0433\u043e-\u0443\u0433\u043e\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>nt:unstructured<\/code>  <\/li>\n<li>\u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0435\u0441\u0442\u044c nt:address, nt:folder, nt:file \u0438 \u0434\u0440\u0443\u0433\u0438\u0435<\/li>\n<li>\u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u0441\u0445\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b \u0443\u0437\u043b\u043e\u0432<\/li>\n<\/ul>\n<p>  <\/p>\n<h6>Mixin-\u0442\u0438\u043f\u044b \u0443\u0437\u043b\u043e\u0432<\/h6>\n<p>  <\/p>\n<ul>\n<li>\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f<\/li>\n<li>\u043d\u043e \u0435\u0441\u0442\u044c \u043c\u0438\u043a\u0441\u0438\u043d-\u0442\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0443\u0437\u043b\u0430\u043c [trait](https:\/\/en.wikipedia.org\/wiki\/Trait_(computer_programming))-\u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/li>\n<li>\u043c\u0438\u043a\u0441\u0438\u043d-\u0442\u0438\u043f\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0443\u0437\u043b\u0443 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0435\u0433\u043e \u0436\u0438\u0437\u043d\u0438<\/li>\n<\/ul>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440: \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>jcr:uuid<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u0417\u043d\u0430\u044f uuid, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0438\u043a\u0441\u0438\u043d <code>mix:referenceable<\/code>, \u0430 \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 <code>mix:versionable<\/code> (\u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>jcr:versionHistory<\/code>, <code>jcr:predecessors<\/code>, <code>jcr:baseVersion<\/code>, <code>jcr:isCheckedOut<\/code>, <code>jcr:mergeFailed<\/code> \u0438 \u0442. \u0434.)<\/p>\n<h6>\u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/h6>\n<p>  <\/p>\n<ul>\n<li>\u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u043a\u0430\u0436\u0434\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0441\u0432\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0443\u0437\u043b\u043e\u0432<\/li>\n<li>\u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Unix \u0438 \u0432\u0435\u0442\u043a\u0438 \u0432 Git\/SVN, \u043a\u0430\u0436\u0434\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043b\u0438\u044f\u043d\u0438\u044f<\/li>\n<li>\u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e<\/li>\n<\/ul>\n<p>  <img decoding=\"async\" alt=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PHPCR\" src=\"http:\/\/habrastorage.org\/storage2\/6bc\/f46\/d7a\/6bcf46d7ae14540b2cc40e014849ef83.png\" title=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PHPCR\"\/><\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438<\/p>\n<pre><code class=\"php\">use PHPCR\\SimpleCredentials;  \/\/ \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 use Jackalope\\RepositoryFactoryJackrabbit as Factory; $parameters = array(     'jackalope.jackrabbit_uri'         =&gt; 'http:\/\/localhost:8080\/server', ); $repository = Factory::getRepository($parameters);  \/\/ \u0430 \u0432\u043e\u0442 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 $creds = new SimpleCredentials('admin','admin'); $session = $repository-&gt;login($creds, 'default'); <\/code><\/pre>\n<p>  CRUD-\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/p>\n<pre><code class=\"php\">$root = $session-&gt;getRootNode();  \/\/ \u0443\u0437\u043b\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 $node = $root-&gt;addNode('test', 'nt:unstructured');  \/\/ \u043d\u043e\u0432\u044b\u0439 \u0443\u0437\u0435\u043b \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 $node = $session-&gt;getNode('\/test');  \/\/ \u0441\u043e\u0437\u0434\u0430\u0442\u044c\/\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e $node-&gt;setProperty('prop', 'value');  \/\/ \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0437\u0435\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 $session-&gt;save();  \/\/ \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0443\u0437\u0435\u043b \u0438 \u0432\u0441\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0443\u0437\u043b\u044b $node-&gt;remove();  \/\/ \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u0443\u0437\u0435\u043b \u043a\u0442\u043e-\u0442\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 $session-&gt;save(); <\/code><\/pre>\n<p>  \u041e\u0431\u0445\u043e\u0434 \u0434\u0435\u0440\u0435\u0432\u0430<\/p>\n<pre><code class=\"php\">$node = $session-&gt;getNode('\/site\/content');  foreach ($node-&gt;getNodes() as $child) {     var_dump($child-&gt;getName()); }  \/\/ \u0438\u043b\u0438 \u043a\u043e\u0440\u043e\u0447\u0435 foreach ($node as $child) {     var_dump($child-&gt;getName()); }  \/\/ \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 foreach ($node-&gt;getNodes('di*') as $child) {     var_dump($child-&gt;getName()); } <\/code><\/pre>\n<p>  \u0412\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c<\/p>\n<pre><code class=\"php\">\/\/ \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c $node = $session-&gt;getNode('\/site\/content\/about'); $node-&gt;addMixin('mix:versionable'); $session-&gt;save(); \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e $node-&gt;setProperty('title', 'About'); $session-&gt;save();  \/\/ \u0447\u0435\u043a-\u0438\u043d (\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e) \/\/ \u0438 \u0447\u0435\u043a-\u0430\u0443\u0442 (\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c) \/\/ \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u0430 $session-&gt;save() $vm = $session-&gt;getWorkspace()-&gt;getVersionManager(); $vm-&gt;checkpoint($node-&gt;getPath());  \/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0443\u0437\u0435\u043b $node-&gt;setProperty('title', 'Ups'); $session-&gt;save();  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0432\u0435\u0440\u0441\u0438\u044e, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00ab\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\u00bb $vm-&gt;checkin($node-&gt;getPath());  $base = $vm-&gt;getBaseVersion($node-&gt;getPath()); $current = $base-&gt;getLinearPredecessor(); $previous = $current-&gt;getLinearPredecessor();  \/\/ \u0431\u0435\u0440\u0435\u043c \u0441\u043b\u0435\u043f\u043e\u043a \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 $frozenNode = $previous-&gt;getFrozenNode(); echo $frozenNode-&gt;getProperty('title'); \/\/ About  \/\/ \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0436\u0438\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 $vm-&gt;restore(true, $previous);  $node = $session-&gt;getNode('\/site\/content\/about'); echo $node-&gt;getProperty('title'); \/\/ About <\/code><\/pre>\n<p>  \u041f\u043e\u0438\u0441\u043a<\/p>\n<pre><code class=\"php\">$qm = $workspace-&gt;getQueryManager();  \/\/ \u0432 SQL2 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0438 &quot;*&quot; \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \/\/ \u0430 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043f\u0443\u0442\u044c \u0438 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \/\/ (\u0441\u043c. http:\/\/docs.jboss.org\/exojcr\/1.12.13-GA\/developer\/en-US\/html\/ch-jcr-query-usecases.html#d0e3332) $sql = &quot;SELECT * FROM [nt:unstructured]     WHERE [nt:unstructured].type = 'nav'     AND ISDESCENDANTNODE('\/some\/path')     ORDER BY score, [nt:unstructured].title&quot;; $query = $qm-&gt;createQuery($sql, 'JCR-SQL2'); $query-&gt;setLimit($limit); $query-&gt;setOffset($offset); $queryResult = $query-&gt;execute();  foreach ($queryResult-&gt;getNodes() as $node) {     var_dump($node-&gt;getPath()); } <\/code><\/pre>\n<p>  \u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"http:\/\/phpcr.github.io\/slides.html#20\">\u0432 \u044d\u0442\u043e\u0439 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043c\u0430\u043d\u044f\u0449\u0435\u0439 \u043c\u044b\u0441\u043b\u0438 \u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u044d\u043a\u0435\u043d\u0434\u0430\u0445.<\/p>\n<p>  \u0418\u043c\u0435\u0435\u043c \u043c\u044b \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439, \u043d\u043e \u0438 \u0442\u0435 \u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435:<\/p>\n<ul>\n<li><a href=\"http:\/\/midgard-project.org\/phpcr\/\">Midgard2 PHPCR<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jackalope\/jackalope\">Jackalope<\/a><\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Jackrabbit<\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Doctrine DBAL (\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0411\u0414)<\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 MongoDB (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442)<\/li>\n<\/ul>\n<p>  <\/p>\n<h5>Midgard2 PHPCR<\/h5>\n<p>  <a href=\"http:\/\/midgard-project.org\/midgard2\/\">Midgard2<\/a> \u2014\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0441 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430\u043c\u0438 \u0434\u043b\u044f C, Python \u0438 <a href=\"http:\/\/midgard-project.org\/phpcr\/\">PHP<\/a>.<\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e <a href=\"https:\/\/github.com\/midgardproject\/phpcr-midgard2#phpcr-and-midgard2\">\u043e\u0442\u043b\u0438\u0447\u0430\u044f\u0441\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439<\/a> \u043e\u0442 JCR, Midgard2 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 Midgard2 PHPCR \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <a href=\"https:\/\/github.com\/midgardproject\/midgard-php5\">php5-midgard2<\/a>. \u0411\u0443\u0434\u0443\u0447\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0440\u0445 GNOME-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 libgda, Midgard2 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <a href=\"http:\/\/www.gnome-db.org\/Providers_status\">\u0432\u043d\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a<\/a> \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043b\u043e\u0436\u043a\u0443 \u0434\u0435\u0433\u0442\u044f \u2014 PHP-\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u043b\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u041e\u0421:<\/p>\n<ul>\n<li>\u043f\u043e\u0434 Debian 7 Wheezy \u043f\u0430\u043a\u0435\u0442 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0442\u043a\u0430\u0445 (\u0438 \u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u043e\u00a0\u2014 \u043c\u043e\u043b\u0447\u0430 \u0440\u043e\u043d\u044f\u0435\u0442 PHP-FPM \u0432 \u0441\u0435\u0433\u0444\u043e\u043b\u0442).<\/li>\n<li>\u0434\u043b\u044f CentOS \u043f\u0430\u043a\u0435\u0442\u044b \u0435\u0441\u0442\u044c \u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435, \u043b\u0438\u0431\u043e \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 (\u043d\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c, \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0440\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438)<\/li>\n<li>\u043d\u0430 Windows \u0431\u0438\u043b\u0434\u043e\u0432 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043b\u0438\u044f\u044e\u0442 \u00ab\u0433\u043d\u043e\u043c\u044c\u0438\u00bb \u043a\u043e\u0440\u043d\u0438 \u0441\u0430\u043c\u043e\u0433\u043e Midgard2, \u0445\u043e\u0442\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0432\u0438\u0434\u043d\u044b \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0435\u0449\u0435 \u0434\u043b\u044f PHP4)<\/li>\n<li>\u043f\u043e\u0434 Mac OS \u043f\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u0432\u0438\u0434\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u043e\u043d\u043e\u0439 (\u043d\u043e \u0441\u0443\u0434\u044f \u043f\u043e \u0441\u0430\u0439\u0442\u0443, \u0432\u0441\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 brew).<\/li>\n<\/ul>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u0432\u0441\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0430 Ubuntu Server 12.04, \u0442\u0430\u043c \u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u0441\u0432\u0435\u0436\u0438\u0435, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u043b\u0435\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0438\u0437 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 Symfony CMF \u0432 IRC \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0431\u044d\u043a\u0435\u043d\u0434-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043a\u0430\u043a \u0441\u043b\u043e\u043c\u0430\u043d, \u0434\u0430\u0436\u0435 \u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Midgard2, \u0445\u043e\u0442\u044f <a href=\"https:\/\/github.com\/bergie\/\">bergie<\/a> \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b\u0441\u044f \u0442\u0430\u043a\u0438 \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c.<\/p>\n<p>  <img decoding=\"async\" alt=\"IRC\" src=\"http:\/\/habrastorage.org\/storage3\/ec9\/8b7\/48a\/ec98b748a2b77576240a9a8c452c139e.png\" title=\"IRC\"\/><\/p>\n<p>  \u0423 \u043c\u0435\u043d\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c Midgard2 PHPCR \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 Symfony CMF \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0443 \u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u041d\u0435 \u0441\u0435\u0439\u0447\u0430\u0441, \u0442\u0430\u043a \u043f\u043e\u0442\u043e\u043c.<\/p>\n<h5>Jackalope<\/h5>\n<p>  \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u043e\u0431\u044b\u0433\u0440\u044b\u0432\u0430\u0442\u044c \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u0437\u0430\u044f\u0447\u044c\u044e \u0442\u0435\u043c\u0443 (<a href=\"http:\/\/images.nationalgeographic.com\/wpf\/media-live\/photos\/000\/005\/cache\/jackrabbit_586_600x450.jpg\">Jackrabbit<\/a>, <a href=\"http:\/\/spookspot.files.wordpress.com\/2009\/11\/jackalope.jpg\">Jackalope<\/a>), Jackalope \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0440\u0435\u043c \u0432\u0438\u0434\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\u044d\u0442\u043e \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043d\u0430\u043c Apache Jackrabbit<\/li>\n<li>Doctrine Database Abstraction Layer, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 DBAL \u0434\u0432\u0438\u0436\u043a\u0438. \u042d\u0442\u043e \u0432 \u0442\u0435\u043e\u0440\u0438\u0438, \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e MySQL, PostreSQL \u0438 SQLite (\u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u0435\u0449\u0435?).<\/li>\n<li><a href=\"https:\/\/github.com\/chirimoya\/jackalope\/tree\/MongoDB\">MongoD\u0412<\/a> (\u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u0433\u043e\u0434\u0430, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0439 \u0432\u0441\u0435\u0433\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e)<\/li>\n<\/ul>\n<p>  Jackalope (\u0438 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 jackalope-jackrabbit) \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u0430\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u0430\u044f \u0432 \u043f\u043b\u0430\u043d\u0435 \u0444\u0438\u0447 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f PHPCR API. \u0421 \u043d\u0435\u0439 \u0438 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, phpcr-api-tests, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c PHPCR API, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438 \u0434\u043b\u044f jackalope-doctine-dbal, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0434\u043e\u0433\u043e\u043d\u0438\u0442.<\/p>\n<h4>\u0420\u0435\u0437\u044e\u043c\u0435 \u043f\u043e PHPCR<\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c (\u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 PHP) API \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 JCR API. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e API \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0434\u0432\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u0430, \u0438 \u043d\u0430 \u043e\u0431\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043d \u043e\u0442\u0432\u0435\u0442:<\/p>\n<p>  <strong>\u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PHPCR?<\/strong><\/p>\n<ul>\n<li>\u041a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438<\/li>\n<li>\u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c<\/li>\n<li>\u041a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n<\/ul>\n<p>  <strong>\u041a\u043e\u0433\u0434\u0430 \u041d\u0415 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PHPCR?<\/strong><\/p>\n<p>  \u0414\u043b\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0433\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 PHPCR, \u0430 \u0437\u0430\u043a\u0430\u0437\u044b \u2014\u00a0\u0432 \u0420\u0421\u0423\u0411\u0414.<\/p>\n<h4>PHPCR ODM<\/h4>\n<p>  \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u043d\u043e API \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u0432\u0435\u0434\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u043e \u043a \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c ORM-\u0441\u0438\u0441\u0442\u0435\u043c\u0435). \u0418 \u0442\u0443\u0442 \u043d\u0430 \u0441\u0446\u0435\u043d\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"http:\/\/www.doctrine-project.org\/projects\/phpcr-odm.html\">PHPCR ODM<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0432\u044f\u0437\u043a\u0443 PHPCR \u0438 Object Document Mapper.<\/p>\n<p>  <a href=\"http:\/\/www.doctrine-project.org\/projects\/orm.html\">Doctrine ORM<\/a>, \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u043c SF2 (\u0434\u0430 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e SF2), \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d <a href=\"http:\/\/en.wikipedia.org\/wiki\/Data_mapper_pattern\">Data mapper<\/a> \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u043c\u0441\u044f \u0432 RDMBS.<\/p>\n<p>  ODM, \u043f\u043e\u0434\u043e\u0431\u043d\u043e Doctrine ORM, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Data mapper \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438 \u043e\u0442 \u0441\u043b\u043e\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0410\u0432\u0442\u043e\u0440\u044b \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e ODM \u043d\u0430\u0432\u0435\u044f\u043d \u0438\u0434\u0435\u044f\u043c\u0438 <a href=\"http:\/\/www.hibernate.org\/\">Hibernate<\/a>.<\/p>\n<p>  ODM \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0432\u0438\u0434\u0435 PHPCR-\u0443\u0437\u043b\u043e\u0432, \u043d\u0430\u0437\u044b\u0432\u0430\u044f \u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 PHPCR \u0443\u0436\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043e\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (DBAL).<\/p>\n<p>  \u0427\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 <strong>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442<\/strong> \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 PHPCR ODM?<\/p>\n<p>  \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b\u0439 PHP-\u043a\u043b\u0430\u0441\u0441, \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b (\u0432\u0435\u0440\u043d\u0435\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c-\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0441\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442) \u0438 \u043d\u0435 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0422\u0430\u043a\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0441 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c <code>final<\/code>, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b <code>clone()<\/code> \u0438 <code>wakeup()<\/code>, \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c, \u043d\u043e \u0434\u0435\u043b\u0430\u044f \u044d\u0442\u043e <em>\u043e\u0447\u0435\u043d\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e<\/em>. \u0421\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 ODM \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"http:\/\/www.doctrine-project.org\/projects\/common.html\">Doctrine Common<\/a>, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b (\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432), \u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0432\u0441\u0435\u043c \u043f\u0443\u0442\u0435\u043c \u2014\u00a0\u0447\u0435\u0440\u0435\u0437 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0432 PHP-\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043b\u0438\u0431\u043e YAML\/XML-\u043a\u043e\u043d\u0444\u0438\u0433\u0430\u0445. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0435\u0441\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a (title) \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 (content). \u0412\u0441\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b. \u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430:<\/p>\n<pre><code class=\"php\">namespace Demo;  use Doctrine\\ODM\\PHPCR\\Mapping\\Annotations as PHPCRODM;  \/**  * @PHPCRODM\\Document  *\/ class MyDocument {     \/**      * @PHPCRODM\\Id      *\/     private $id;     \/**      * @PHPCRODM\\ParentDocument      *\/     private $parent;     \/**      * @PHPCRODM\\Nodename      *\/     private $name;     \/**      * @PHPCRODM\\Children      *\/     private $children;     \/**      * @PHPCRODM\\String      *\/     private $title;      \/**      * @PHPCRODM\\String      *\/     private $content;    \/\/ \u0438 \u0435\u0449\u0435 \u0433\u043e\u0440\u0441\u0442\u043a\u0430 \u0433\u0435\u0442\u0442\u0435\u0440\u043e\u0432 \u0438 \u0441\u0435\u0442\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 } <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, String) \u043c\u043e\u0433\u0443\u0442 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0438\u043f \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0438\u043b\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0441 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c Data mapper \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Active_record_pattern\">Active record<\/a> (\u043f\u0440\u0438\u0432\u0435\u0442, \u0440\u0435\u043b\u044c\u0441\u043e\u0432\u0438\u043a\u0438 \u0438 Yii-\u0448\u043d\u0438\u043a\u0438), \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u043e\u043d\u0438 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f.<\/p>\n<p>  \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043c?<\/p>\n<pre><code class=\"php\">require_once '..\/bootstrap.php';  \/\/ \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0443\u0437\u0435\u043b $rootDocument = $documentManager-&gt;find(null, '\/');  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 $doc = new \\Demo\\Document(); $doc-&gt;setParent($rootDocument); $doc-&gt;setName('doc'); $doc-&gt;setTitle('My first document'); $doc-&gt;setContent('The document content');  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439, \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e $childDocument = new \\Demo\\Document(); $childDocument-&gt;setParent($doc); $childDocument-&gt;setName('child'); $childDocument-&gt;setTitle('My child document'); $childDocument-&gt;setContent('The child document content');   \/\/ \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0443 \u043d\u0430\u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f $documentManager-&gt;persist($doc); $documentManager-&gt;persist($childDocument);  \/\/ \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u0442.\u0434. \u0432 \u0431\u044d\u043a\u0435\u043d\u0434 $documentManager-&gt;flush(); <\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"php\">require_once '..\/bootstrap.php';  $doc = $documentManager-&gt;find(null, &quot;\/doc&quot;); echo 'Found '.$doc-&gt;getId() .&quot;\\n&quot;; echo 'Title: '.$doc-&gt;getTitle().&quot;\\n&quot;; echo 'Content: '.$doc-&gt;getContent().&quot;\\n&quot;; foreach($doc-&gt;getChildren() as $child) {     if ($child instanceof \\Demo\\Document) {         echo 'Has child '.$child-&gt;getId() . &quot;\\n&quot;;     } else {         echo 'Unexpected child '.get_class($child).&quot;\\n&quot;;     } }  \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 $documentManager-&gt;remove($doc);  $documentManager-&gt;flush(); <\/code><\/pre>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u2014\u00a0\u0432 ORM \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412 ODM \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u0438 <a href=\"http:\/\/docs.doctrine-project.org\/projects\/doctrine-phpcr-odm\/en\/latest\/reference\/working-with-objects.html#workingobjects-query\">\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u0435\u043b\u0430\u0442\u044c<\/a>, \u0435\u0441\u043b\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0412 PHPCR ODM \u0443\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u0432\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0435\u0440\u0432\u043e\u0439.<\/p>\n<p>  \u0412\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432 PHPCR \u0431\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u043e\u0432 \u2014\u00a0simpleVersionable \u0438 versionable. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b checkin\/checkout-\u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0427\u0435\u043a\u0438\u043d \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0443\u0437\u043b\u0430 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0447\u0442\u043e-\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u043a\u0430\u0443\u0442.<\/p>\n<p>  \u041f\u043e\u043b\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0432\u0435\u0440\u0441\u0438\u0439 (\u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u0435\u043b\u043f\u0435\u0440-\u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0443 PHPCR-ODM \u043f\u043e\u043a\u0430 \u043d\u0435\u0442) \u0438 \u043c\u0435\u0442\u043a\u0438 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u043d\u0430\u0447\u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c Jackalope). \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0443 \u043a \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u043e \u0437\u0430 \u0432\u0441\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u043c\u0435\u0442\u043a\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b (\u0442\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043d\u0443\u0436\u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043d\u044f\u0442\u044c \u0435\u0435 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438). <\/p>\n<p>  \u041f\u043e\u043b\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0443\u0435\u0442 \u0442\u0438\u043f\u0443 <code>mix:versionable<\/code> \u0438\u0437 PHPCR \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, PHPCR Version API \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f PHPCR ODM \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 <code>PHPCR\\VersionManager<\/code> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 PHPCR-\u0441\u0435\u0441\u0441\u0438\u044e. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c <a href=\"http:\/\/github.com\/phpcr\/phpcr\/blob\/master\/doc\/Tutorial.md\">\u0442\u0443\u0442<\/a> \u0438 <a href=\"http:\/\/www.day.com\/specs\/jcr\/2.0\/15_Versioning.html\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  \u0418\u043c\u0435\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f PHPCR \u0438 \u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c. \u041f\u043e\u043d\u044f\u0442\u0438\u0435 \u043a\u043e\u043c\u043c\u0438\u0442-\u043c\u0435\u0441\u0441\u0435\u0434\u0436\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 (\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c). \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u043f\u043e\u043b\u0435 \u043f\u043e\u0434 \u044d\u0442\u043e \u0434\u0435\u043b\u043e.<\/p>\n<p>  \u0421\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u2014\u00a0\u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>restoreVersion()<\/code> \u0438 <code>removeVersion()<\/code>.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"php\">\/**  * @Document(versionable=&quot;simple&quot;)  *\/ class MyPersistentClass {     \/** @VersionName *\/     private $versionName;      \/** @VersionCreated *\/     private $versionCreated; } <\/code><\/pre>\n<p>  \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442, \u0430\u0432\u0442\u043e\u0440\u044b \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 Phpdoc-\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e\u043b\u0433\u043e \u0437\u0430\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u044f\u0445 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438 \u043f\u043e\u0439\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<pre><code class=\"php\">$article = new Article(); $article-&gt;id = '\/test'; $article-&gt;topic = 'Test'; $dm-&gt;persist($article); $dm-&gt;flush();  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u043f\u043e\u043a \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f $dm-&gt;checkpoint($article);  $article-&gt;topic = 'Newvalue'; $dm-&gt;flush();  \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0441\u0438\u044f\u0445 $versioninfos = $dm-&gt;getAllLinearVersions($article); $firstVersion = reset($versioninfos); \/\/ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u043f\u043a\u0430 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 $oldVersion = $dm-&gt;findVersionByName(null, $article-&gt;id, $firstVersion['name']);  echo $oldVersion-&gt;topic; \/\/ &quot;Test&quot;  \/\/ \u0438\u0449\u0435\u043c \u043d\u043e\u0432\u0435\u0439\u0448\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e $article = $dm-&gt;find('\/test'); echo $article-&gt;topic; \/\/ &quot;Newvalue&quot;  \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 $dm-&gt;restoreVersion($oldVersion);  \/\/ \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f echo $article-&gt;topic; \/\/ &quot;Test&quot;  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0432\u0435\u0440\u0441\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 $article-&gt;topic = 'Newvalue'; $dm-&gt;flush(); $dm-&gt;checkpoint($article);  \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 (\u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0434\u0430\u0434\u0443\u0442) $dm-&gt;removeVersion($oldVersion); <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c. \u041b\u044e\u0431\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\u043e\u0435. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0447\u0435\u043c \u0437\u0440\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u044f\u0432\u043d\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0442\u0441\u044f \u2014\u00a0\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0441\u043a\u0430\u0437\u0430\u0442\u044c DocumentManager, \u043a\u0430\u043a\u043e\u0439 \u044f\u0437\u044b\u043a \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0442\u0438\u043f\u0430 <code>find()<\/code> \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d. \u0423\u0434\u043e\u0431\u043d\u043e:<\/p>\n<pre><code class=\"php\">\/**  * @PHPCRODM\\Document(translator=&quot;attribute&quot;)  *\/ class MyPersistentClass {   \/**    * \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430    * @Locale    *\/   private $locale;    \/**    * \u041d\u0435\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e    * @Date    *\/   private $publishDate;    \/**    * \u041f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e    * @String(translated=true)    *\/   private $topic;    \/**    * \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430    * @Binary(translated=true)    *\/   private $image; } <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043f\u043e\u043b\u0435\u0439:<\/p>\n<pre><code class=\"php\">\/\/ \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c DocumentManager (\u043f\u0440\u0438\u043c\u0435\u0440 \u0435\u0441\u0442\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438)  $localePrefs = array(     'en' =&gt; array('fr'),     'fr' =&gt; array('en'), );  $dm = new \\Doctrine\\ODM\\PHPCR\\DocumentManager($session, $config); $dm-&gt;setLocaleChooserStrategy(new LocaleChooser($localePrefs, 'en'));  \/\/ \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434:  $doc = new Article(); $doc-&gt;id = '\/my_test_node'; $doc-&gt;author = 'John Doe'; $doc-&gt;topic = 'An interesting subject'; $doc-&gt;text = 'Lorem ipsum...';  \/\/ \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c $dm-&gt;persist($doc); $dm-&gt;bindTranslation($doc, 'en');  \/\/ \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c $doc-&gt;topic = 'Un sujet int\u00e9ressant'; $dm-&gt;bindTranslation($doc, 'fr');  \/\/ \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u043b\u043e\u043a\u0430\u043b\u044c echo $doc-&gt;locale; \/\/ fr  \/\/ \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 PHPCR $dm-&gt;flush();  \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \/\/ (\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435) $doc = $dm-&gt;find(null, '\/my_test_node');  \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c $doc = $dm-&gt;findTranslation(null, '\/my_test_node', 'fr'); $doc-&gt;title = 'nouveau'; $dm-&gt;flush(); \/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c, \u044f\u0437\u044b\u043a \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 <\/code><\/pre>\n<p>  \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0441\u044b\u043b\u043e\u043a, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435, \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0444\u043e\u043b\u043b\u0431\u0435\u043a \u043a \u044f\u0437\u044b\u043a\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043b\u0443\u0447\u0448\u0435, \u043f\u0440\u0438\u0447\u0435\u043c \u0442\u0430\u043a \u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043f\u043e\u043a\u0430 \u0432\u0438\u0441\u0438\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044f, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435, \u043d\u0430 \u0434\u0435\u043b\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442). \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043a\u0430\u0436\u0435\u0442, \u043a\u0430\u043a \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0448\u0435\u043d\u044b.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0443\u043b\u0443\u0447\u0448\u0430\u0442 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u043d\u0430\u0447\u043d\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e (\u0441 \u044d\u0442\u0438\u043c \u043f\u043e\u043a\u0430 \u043e\u0447\u0435\u043d\u044c \u0441\u043a\u0443\u0434\u043d\u043e), \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u044f\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Solr\/ElasticSearch \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 Doctrine DBAL \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e\u0442 \u0434\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f MongoDB. \u0421\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043c\u0430\u0436\u043e\u0440\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Jackrabbit (\u043f\u043e\u0434 \u043a\u043e\u0434\u043e\u0432\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c Oak) \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0432\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 PHPCR \u0438 \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041f\u043e\u0434\u0432\u0435\u0434\u0435\u043c \u0438\u0442\u043e\u0433. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 ODM \u0441\u0442\u0435\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<ul>\n<li>PHP Content Repository \u0441 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c \u0432 \u0432\u0438\u0434\u0435 Jackalope \u0438\u043b\u0438 Midgard2 (\u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 Jackrabbit \u0438\u043b\u0438 \u0420\u0421\u0423\u0411\u0414)<\/li>\n<li>PHPCR-ODM \u043f\u043e\u0432\u0435\u0440\u0445 Doctrine Common \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0431\u044d\u043a\u0435\u043d\u0434\u0430<\/li>\n<li>\u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/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\/197524\/\"> http:\/\/habrahabr.ru\/post\/197524\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/c1b\/f41\/bac\/c1bf41bace6a77852b5be0209c726b95.png\" alt=\"image\" align=\"left\"\/><\/p>\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u044f<\/h4>\n<p>  \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e \u043d\u0430 <a href=\"http:\/\/yiiframework.com\">Yii<\/a> \u0443\u0436\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b \u0437\u0430\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 Symfony Framework 2. \u041e\u0442\u0447\u0430\u0441\u0442\u0438 \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u0441\u043b\u0430\u0431\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430 \u043d\u0435\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c CMS, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0434\u0430\u0436\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0439.<\/p>\n<p>  \u041a\u043e\u0440\u043e\u0431\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438, \u043e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044f \u0437\u0430\u0431\u0440\u0435\u043b \u043d\u0430 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Symfony CMF \u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u0440\u0430\u0436\u0435\u043d \u043d\u0430\u043f\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434\u0438\u0447\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0442\u0435\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0432 \u0431\u044b\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043a\u043e\u043d\u0432\u0435\u0435\u0440\u0435 \u043f\u043e \u043d\u0430\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u044e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0414\u0440\u0443\u043f\u0430\u043b. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u0440\u043e \u0438\u043c\u0435\u043d\u043d\u043e CMF \u043d\u0435\u0442, \u0434\u0430 \u0438 \u0441\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0435\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u044b\u0440\u043e\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0445\u043e\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0438 \u0435\u0441\u0442\u044c \u043a \u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u0434\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<h4>Symfony CMF<\/h4>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442 <a href=\"http:\/\/cmf.symfony.com\">Symfony CMF<\/a> \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u043f\u0440\u0438\u0441\u0443\u0449\u0435\u0433\u043e CMS, \u0434\u043b\u044f \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 Symfony Framework 2.<br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<ul>\n<li>\u0441\u043b\u0430\u0431\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432<\/li>\n<li>\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c<\/li>\n<li>\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e<\/li>\n<li>\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c<\/li>\n<\/ul>\n<p>  \u0421\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043a\u0446\u0435\u043d\u0442 \u043d\u0430 \u0441\u043b\u043e\u0432\u0435 <strong>CMF<\/strong> \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f CMS \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435, \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e <strong>\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a<\/strong>. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 CMS, \u0433\u0434\u0435 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0435, \u0432 Symfony CMF \u0432\u044b:<\/p>\n<ul>\n<li>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u0441\u0435, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f<\/li>\n<li>\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f<\/li>\n<li>\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0435 \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/li>\n<\/ul>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c, \u0432\u0430\u043c \u0434\u0430\u043d \u043d\u0430\u0431\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u043f\u043e\u0434 \u043a\u043b\u044e\u0447\u00bb, \u0445\u043e\u0442\u044f \u0443\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0431\u0430\u043d\u0434\u043b\u044b, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0435 CMS-\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.  <\/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-197524","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/197524","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=197524"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/197524\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=197524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=197524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=197524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}