Zend Framework3 + Doctine2 рдкрд░ рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдкрд░рд┐рдЪрдп: рд╣рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ


рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрд░рдмреАрдПрд╕реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХрд╛ рдХрд╛рд░реНрдп рдЕрдирд╕реБрд▓рдЭрд╛ рд░рд╣рддрд╛ рд╣реИред рд░рд╛рдЬреНрдп рдорд╢реАрди рдпрд╛ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдХреНрд░рдордг рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ, рд╢рд░реНрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдзреАрди рдХрд░рдХреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЖрджреЗрд╢ рднреА рдбрд╛рд▓рддрд╛ рд╣реИред


рдореИрдВ рд╕рд┐рджреНрдзрд╛рдВрдд 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП Zend рдлреНрд░реЗрдорд╡рд░реНрдХ 3 рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд╡рдпрдВ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред


рдФрд░ рдпрд╣рд╛рдБ рдореИрдВ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред


рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ




рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдЧреНрд░рд╛рдл рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐:


  1. рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред
  2. рдЖрдкрдХреЛ рдЙрд╕реА рд░рд╛рдЬреНрдп рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдмреНрдпрд╛рдЬ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
    рд╣рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБред
  3. рдЖрдкрдХреЛ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ред


рдПрдХ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдзреЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛ рдП рдФрд░ рдмреА рдХреА рдЬреЛрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХреНрд░рдордг рдЧреНрд░рд╛рдл рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рддрд╛рд▓рд┐рдХрд╛ a:


CREATE TABLE `tr_a` ( `id` int(11) NOT NULL AUTO_INCREMENT, `src_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `action_id` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT ' ', `condition` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '   ', PRIMARY KEY (`id`), KEY `IDX_96B84B3BFF529AC` (`src_id`), KEY `IDX_96B84B3B9D32F035` (`action_id`), CONSTRAINT `FK_96B84B3B9D32F035` FOREIGN KEY (`action_id`) REFERENCES `action` (`id`), CONSTRAINT `FK_96B84B3BFF529AC` FOREIGN KEY (`src_id`) REFERENCES `state` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

рдЯреЗрдмрд▓ рдмреА:


 CREATE TABLE `tr_b` ( `id` int(11) NOT NULL AUTO_INCREMENT, `transition_a_id` int(11) NOT NULL, `dst_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `weight` int(11) DEFAULT NULL COMMENT '  ,- , null-  ', `condition` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '   ', `pre_functor` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT ' ,  ,   ', `post_functor` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT ' ,  ,   ', PRIMARY KEY (`id`), KEY `IDX_E12699CB85F4C374` (`transition_a_id`), KEY `IDX_E12699CBE1885D19` (`dst_id`), CONSTRAINT `FK_E12699CB85F4C374` FOREIGN KEY (`transition_a_id`) REFERENCES `tr_a` (`id`), CONSTRAINT `FK_E12699CBE1885D19` FOREIGN KEY (`dst_id`) REFERENCES `state` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

рдореИрдВ рдЗрдХрд╛рдИ рд╡рд░реНрдЧреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛; рдЖрдк рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


  1. рдЯреЗрдмрд▓ рдП
  2. рдЯреЗрдмрд▓ рдмреА

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рд╡рд┐рд╡рд░рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред


рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ


 /** *            * @param object $objE * @param string $action * @param array $data extra data * @return array * @throws ExceptionNS\StateMachineException */ public function doAction($objE, $action, array $data = []) /** *          * @param object $objE * @param string $action * @param array $data * @return bool */ public function hasAction($objE, $action, $data=[]) 

рдЖрд░рд╛рдорджрд╛рдпрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рдореБрдЦреНрдп doAction() рд╡рд┐рдзрд┐ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ doAction() ред


рд╡рд╕реНрддреБ рд╕реЗ рд╣рдо рдЙрд╕рдХрд╛ рд░рд╛рдЬреНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред


рдЗрд╕реЗ рдЬрд╛рдирдиреЗ рдФрд░ рдПрдХреНрд╢рди рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░, рдПрдВрдЯрд┐рдЯреА-рдП рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдХреНрд░рдордг рддрд╛рд▓рд┐рдХрд╛ рдП рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╢рд░реНрдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╢рд░реНрдд, рдЬреЛ рдЗрдХрд╛рдИ-рдП рд╕реЗ condition рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрд░рдмреАрдПрд╕реА рдХреНрд▓реЙрдЬ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рддрд┐ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдорд╛рдиреНрдпрдХрд░реНрддрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ condition рдлрд╝реАрд▓реНрдб рд╕реЗ ValidatorPluginManager рдФрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд┐рд▓реЗрдЧрд╛
\Zend\Validator\ValidatorInterface рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ ValidatorChain рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рд╣рдордиреЗ рд╕рдВрдХреНрд░рдордг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреАред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рд╣реИ
рд░рд╛рдЬреНрдп рдорд╢реАрди , рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрдИ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдРрд╕реЗ рдорд╛рдорд▓реЗ рдмрд╣реБрдд рдЖрдо рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдХрдиреЗрдХреНрд╢рди рдП - <рдмреА рджреНрд╡рд╛рд░рд╛, рд╣рдо рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдирдП рд░рд╛рдЬреНрдпреЛрдВ (рдЗрдХрд╛рдИ-рдмреА) рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рдПрдХ рд░рд╛рдЬреНрдп рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдПрдВрдЯрд┐рдЯреА-рдмреА рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ weight рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрдбрд╝реЗ рд╕реЗ рдЫреЛрдЯреЗ рддрдХ рдЫрд╛рдБрдЯрддреЗ рд╣реИрдВред рд╕реНрдерд┐рддрд┐ рдХреА рдкрд╣рд▓реА рд╕рдлрд▓ рдЬрд╛рдВрдЪ рд╣рдореЗрдВ рдПрдВрдЯрд┐рдЯреА-рдмреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБ рдХреА рдПрдХ рдирдИ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ ( dst_id рдлрд╝реАрд▓реНрдб рджреЗрдЦреЗрдВ)ред


рдирдпрд╛ рд░рд╛рдЬреНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдЕрдм, рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд░рд╛рдЬреНрдп рдорд╢реАрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧреА
рдкрд╣рд▓реЗ рд╕реЗ рддрдп рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдлрд┐рд░ рдпрд╣ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ рдФрд░ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдЧрд╛,
рдкреЛрд╕реНрдЯрдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд░рд╛рдЬреНрдп рдорд╢реАрди рдкреНрд▓рдЧ-рдЗрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЛрд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдлрд╝рдВрдХреНрд╢рди рдФрд░ post_functor рд▓рд┐рдП pre_functor рдлрд╝реАрд▓реНрдб рд╕реЗ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ pre_functor рдХрд░реЗрдЧреА рдФрд░ рдкреНрд░рд╛рдкреНрдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП __inoke () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧреАред


рдлрдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд░рд╛рдЬрдХреАрдп рдорд╢реАрди рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред рдпрджрд┐ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдкрд░реЛрдХреНрдд рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╢реВрдиреНрдп рд╕реЗрдЯ рдХрд░реЗрдВред


рдЕрдиреНрдп рдЪрд┐рдкреНрд╕:


  1. рд╕рдВрдХреНрд░рдордг рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА condition рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, pre_funtor , post_functor рдореИрдВ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
  2. рджреГрд╢реНрдп рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ A рдФрд░ B рд╕реЗ рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рдПрдВред
  3. рдореИрдВ рд░рд╛рдЬреНрдп рдФрд░ рдХреНрд░рд┐рдпрд╛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рд╡рд╛рд▓реЗ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  4. рдЪреВрдВрдХрд┐ рдПрдХ nondeterministic рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦрдиреЗ рдЬреИрд╕реА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  5. рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рдЬреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рджреА рдЧрдИ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдпрд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЬрд╛рдБрдЪ рдХрд░рдирд╛ред рдЕрдХреНрд╕рд░ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдЧреНрд░рд┐рдб рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреЗ рдЗрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред
  6. рдмреЗрд╢рдХ, рдЕрдиреНрдп рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреЛ рдлрдВрдХреНрд╢рдирд▓рд░реНрд╕ рдХреЗ рдЕрдВрджрд░ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЦреБрдж рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдпрд╛ рдПрдХ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рд╕реНрдЯреЗрдЯ рдСрдлрд╝ (рдпрд╛рдиреА рдкреЛрд╕реНрдЯ-рдлрд╝рдВрдХреНрдЯрд░ рдореЗрдВ) рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рджред рдпрд╣ рдХрднреА-рдХрднреА рдЧреНрд░рд╛рд╣рдХ рд╕реЗ "рдЕрдЪрд╛рдирдХ" рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рддрд╣рдд рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рд╕рдВрдХреНрд░рдордг рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ;)

рдирд┐рд╖реНрдХрд░реНрд╖


рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╣реА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣реА рдирд┐рд░реНрдгрдп рдЬреЛ рдореИрдВрдиреЗ рджреЗрдЦреЗ, рд╡реЗ рдореЗрд░реЗ рд▓рд┐рдП рд░рд╛рдХреНрд╖рд╕реА рд▓рдЧ рд░рд╣реЗ рдереЗред


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд┐рд╕реА рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

Source: https://habr.com/ru/post/hi413701/


All Articles