MVC + рдкрд░рд┐рджреГрд╢реНрдп рдмрдирд╛рдо рд╡рд╕рд╛ рдирд┐рдпрдВрддреНрд░рдХ

MVC + рдкрд░рд┐рджреГрд╢реНрдп рдмрдирд╛рдо рдореЛрдЯрд╛ рдирд┐рдпрдВрддреНрд░рдХ


рдЖрдзреБрдирд┐рдХ PHP рдлреНрд░реЗрдорд╡рд░реНрдХ (рд╕рд┐рдореНрдлрдиреА, рд▓рд╛рд░рд╡реЗрд▓, рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рд░ рдЬрдЧрд╣) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлреИрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ ( fat controllers ) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рдг рд╣реЛрддреЗ рд╣реИрдВ, рд╕рднреА рдХреА рдирд┐рдВрджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕, рдФрд░ рдЦреБрдж рдХреЛ рд░реВрдкрд░реЗрдЦрд╛ред


рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ? рдФрд░ рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЪрд▓реЛ рдареАрдХ рд╣реИред


рд╢рдмреНрджрд╛рд╡рд▓реА


  • рдореЙрдбрд▓ - рдореЙрдбрд▓ (рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рд╢реЗрдкрд░)
  • рджреЗрдЦреЗрдВ - рджреГрд╢реНрдп (рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдбреЗрдХреЛрд░реЗрдЯрд░)
  • рдирд┐рдпрдВрддреНрд░рдХ - рдирд┐рдпрдВрддреНрд░рдХ (рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЙрдбрд▓-рд╡реНрдпреВ рд╕рдордиреНрд╡рдпрдХ)
  • рдЦрд╛рдХрд╛ - рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рдЦрд╛рдХрд╛
  • рдкреНрд░рддрд┐рдкрд╛рджрди - рдкреНрд░рддрд┐рдкрд╛рджрди (рдЧрдарди, рдкреНрд░рд╕реНрддреБрддрд┐ рдЫрд╡рд┐ рдХрд╛ рдбрд┐рдЬрд╛рдЗрди)
  • рд░реЗрдВрдбрд░рд░ - рд░реЗрдВрдбрд░рд░ (рд╢реЗрдкрд░, рдкреНрд░рд╕реНрддреБрддрд┐ рдЫрд╡рд┐ рдХреЗ рдбрд┐рдЬрд╛рдЗрдирд░)

рдореЛрдЯрд╛ рдирд┐рдпрдВрддреНрд░рдХ


рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕рд╛ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ:


 class UserController { /** *   *      ID */ public function actionUserHello($userId) { //         ( ) $user = UserModel::find($userId); //       -   $name = $user->firstName.' '.$user->lastName; //         $view = new View('hello', ['name' => $name]); //  ( )     return $view->render(); } } 

рд╣рдо рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ vinaigrette! рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рд╕рдВрднрд╡ рд╣реИ рд╡рд╣ рдорд┐рд╢реНрд░рд┐рдд рд╣реИ - рджреЛрдиреЛрдВ рдореЙрдбрд▓, рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐, рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рдЦреБрдж!


рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХрд╕рдХрд░ рд╡рд╛рдпрд░реНрдб рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдирд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ рдмрдЬрд╝ рдирд╣реАрдВ рд╣реИред рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЛрдбрд╝ рджреЗрдЦрддреЗ рд╣реИрдВ - рдкрд╣рд▓реЗ рдФрд░ рдЖрдЦрд┐рд░реА рдирд╛рдо рд╕реЗ рдПрдХ рдкреВрд░реНрдг рдирд╛рдо рдХрд╛ рдЧрдардиред рдФрд░ рдпрд╣ рдПрдХ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рд╣реИред


рдФрд░ рдПрдХ рдФрд░ рдмрд╛рдд: рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИред рдЕрд░реНрдерд╛рддреН: рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ (рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг)! рдХреЗрд╡рд▓ рдПрдХ: php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░! рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдкреАрдбреАрдПрдл рдЪрд╛рд╣рд┐рдП? рдФрд░ рдЕрдЧрд░ рдореИрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдПрдХ php рд▓рд╛рдЗрди рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдореЗрд░реЗ рдкрд╛рд╕ рд╕реИрдХрдбрд╝реЛрдВ рдЫреЛрдЯреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╛рдЗрди рдереЗред рдореБрдЭреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░рд░ рдХреЛ рдЦреБрдж рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдЧрд░рдо рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдорд╛рдорд▓рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╣реИред


рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢:


рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдорд╡реАрд╕реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрдзреБрдирд┐рдХ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ:
  1. рдПрдорд╡реАрд╕реА-рд╡реНрдпреВ (рджреЗрдЦреЗрдВ) рдХреА рд╕рдВрдХреАрд░реНрдг рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗрд╡рд▓ "рдХрд┐рд╕реА рдкреАрдПрдЪрдкреА рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВ " рдХреЗ рдмрдЬрд╛рдп "PHP рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВ" ред
  2. рдПрдорд╡реАрд╕реА-рдореЙрдбрд▓ рдХреА рд╕рдВрдХреАрд░реНрдг рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗрд╡рд▓ "рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓ рдбреЛрдореЗрди" рдХреЗ рдмрдЬрд╛рдп "рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рдХ ред "
  3. рд╡реЗ рддрдерд╛рдХрдерд┐рдд "рдерд┐рдХ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕" рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЙрдХрд╕рд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рднреА рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ: рд╡реНрдпрд╛рдкрд╛рд░, рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдмрд╛рддрдЪреАрддред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ MVC рдХреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ - рддреНрд░рдп рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рднрд╛рдЬрдиред

рдЗрди рдХрдорд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MVC рдХреЗ рдШрдЯрдХреЛрдВ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред


рджреГрд╢реНрдп рдПрдХ рд░реЗрдВрдбрд░рд░ рд╣реИ


рдкрд╣рд▓реЗ рджреЛрд╖ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:


  1. рдПрдорд╡реАрд╕реА-рд╡реНрдпреВ (рджреЗрдЦреЗрдВ) рдХреА рд╕рдВрдХреАрд░реНрдг рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗрд╡рд▓ "рдХрд┐рд╕реА рдкреАрдПрдЪрдкреА рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВ " рдХреЗ рдмрдЬрд╛рдп "PHP рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВ" ред

рдпрд╣рд╛рдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╣реБрдд рд╕реВрддреНрд░реАрдХрд░рдг рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд░реЗрдВрдбрд░ рджреЗрдЦрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдИ renderer рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╡реНрдпреВ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:


 class View { public $template, $data, $renderer; public function __costruct($template, $data, $renderer = NULL) {} } 

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ renderer рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдХреЛрдИ рднреА callable рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЗрд╖рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рддрд╛ рд╣реИред


рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗрд╡рд▓ рдПрдХ рд░реЗрдВрдбрд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рднрд▓реЗ рд╣реА рд╡реЗ рдХрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, renderer рддрд░реНрдХ рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реЗрдВрдбрд░рд░ рд╣реИред


рдХреНрдпрд╛ рдпрд╣ рд╕рд░рд▓ рд╣реИ? рдмрд╕ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ View рдПрдорд╡реАрд╕реА рдореЗрдВ рд╣реИ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ View рдирд╣реАрдВ рд╣реИ рдЬреЛ рд░реВрдкрд░реЗрдЦрд╛ рдореЗрдВ рд╣реИред View рдЬреЛ View рд╣реИ рд╡рд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд░рд╣ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди View , рдЬреЛ рдПрдорд╡реАрд╕реА рдореЗрдВ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрди рд╕рдорд╛рди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдХреНрдпреЛрдВ? рд╣рд╛рдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдорд╡реАрд╕реА View , рдпрд╣ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХрд╛ рдХреЛрдИ рднреА рдХрдирд╡рд░реНрдЯрд░ рд╣реИ , рдФрд░ рди рдХреЗрд╡рд▓ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИред рдЬрдм рд╣рдо рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 $name = ' '; return "Hello, {$name}!"; 

рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐:


 $return json_encode($name); // Ajax response 

рддрдм рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ View рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ MVC рдореЗрдВ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА View рдХреЛ View рдЬреЛ рдЪреМрдЦрдЯреЗ рдореЗрдВ рд╣реИ!


рд▓реЗрдХрд┐рди рдЕрдм рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИ: рд╡реЗ View , рдЬреЛ рдЪреМрдЦрдЯреЗ рдореЗрдВ - рдпрд╣ рдЙрди View рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдЬреЛ рдПрдорд╡реАрд╕реА рдореЗрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрдХреАрд░реНрдг рд╕рдмрд╕реЗрдЯ, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдХреЗрд╡рд▓ PHP рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИред


рд╕рд╛рд░рд╛рдВрд╢: рдпрд╣ , рдЕрд░реНрдерд╛рдд рдбреЗрдЯрд╛ рдЫрд╡рд┐ рдХрд╛ рдХреЛрдИ рднреА рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рд╡рд╣ View рд╣реИ рдЬреЛ MVC рдореЗрдВ рд╣реИред рдФрд░ рд╡реЗ View , рдЬреЛ рдЪреМрдЦрдЯреЗ рдореЗрдВ рд╣реИрдВ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ ред


рдбреЛрдореЗрди рдореЙрдбрд▓ / рдореЙрдбрд▓ рджреЗрдЦреЗрдВ (ViewModel / DomainModel)


рдЕрдм рджреВрд╕рд░реА рдХрдорд┐рдпрд╛рдВ рджреЗрдЦреЗрдВ:


  1. рдПрдорд╡реАрд╕реА-рдореЙрдбрд▓ рдХреА рд╕рдВрдХреАрд░реНрдг рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗрд╡рд▓ "рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓ рдбреЛрдореЗрди" рдХреЗ рдмрдЬрд╛рдп "рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рдХ ред "

рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдорд╡реАрд╕реА рдореЙрдбрд▓ рдПрдХ рдЬрдЯрд┐рд▓ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдореЙрдбрд▓ (DomainModel) рдФрд░ рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ (ViewModel): рд╕рдореБрджрд╛рдп рджреЛ рдШрдЯрдХреЛрдВ рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реИред


рдПрдХ рдбреЛрдореЗрди рдореЙрдбрд▓ рд╡рд╣ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдореЙрдбрд▓ рдбреЗрдЯрд╛ред рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ 'рдкреНрд░рдердо рдирд╛рдо' рдФрд░ 'рдЕрдВрддрд┐рдо рдирд╛рдо' рдЯрд╛рдЗрдк рдХрд░реЗрдВред рдореЙрдбрд▓ рдХреЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдЪреМрдЦрдЯреЗ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдХрд╛ рдЕрдкрдирд╛ рдмреНрд░рд╣реНрдорд╛рдВрдб рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдбреЗрдЯрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХрддреНрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЛрдореЗрди рдбреЗрдЯрд╛ рдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ: "рд╣реИрд▓реЛ, рдЗрд╡рд╛рди!", рдпрд╛ "рдбрд┐рдпрд░ рдЗрд╡рд╛рди рдкреЗрддреНрд░реЛрд╡!", рдпрд╛ рдЗрд╡рд╛рди рдП рдкреЗрдЯреНрд░реЛрд╡ рдХреЗ рд▓рд┐рдП рднреА! "ред рдЗрди рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбрд▓ - рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдореЙрдбрд▓ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрднреА рднреА рдЖрдзреБрдирд┐рдХ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдордЭреМрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдЧрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ - рд╡реЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХреЛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред рдФрд░ рд╡реЗ рдирдлрд░рдд рд▓реЗрдХрд┐рди рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдлреИрдЯ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ!


рдХреБрд▓: рдПрдорд╡реАрд╕реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдФрд░ рдЙрдирдХрд╛ рдбреЗрдЯрд╛ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред


рдкрд░рд┐рджреГрд╢реНрдп рдмрдирд╛рдо рд╡рд╕рд╛ рдирд┐рдпрдВрддреНрд░рдХ


рдЪреМрдЦрдЯреЗ рдХрд╛ рдПрдХ рдЕрдВрддрд┐рдо рджреЛрд╖ рд╣реИ:


  1. рд╡реЗ рддрдерд╛рдХрдерд┐рдд "рдерд┐рдХ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕" рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЙрдХрд╕рд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рднреА рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ: рд╡реНрдпрд╛рдкрд╛рд░, рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдмрд╛рддрдЪреАрддред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ MVC рдХреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ - рддреНрд░рдп рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рднрд╛рдЬрдиред

рдпрд╣рд╛рдВ рд╣рдо рдПрдорд╡реАрд╕реА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдкрд░ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред рдЪрд▓реЛ рд╕реНрдкрд╖реНрдЯ рд╣реЛред рдЗрд╕рд▓рд┐рдП, MVC рдиреЗ рддреНрд░рдп рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рддрд░рдг рдХреЛ рдорд╛рдирд╛:


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

рдЖрдЧреЗ рдмрдврд╝реЛред рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЗ рджреЛ рд╕реНрддрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:


  • рд╕рдВрдЧрдардирд╛рддреНрдордХ рд╕реНрддрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ,
  • рдХрд╛рд░реНрдпрдХрд╛рд░реА рд╕реНрддрд░ рдореЙрдбрд▓ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред

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


рдирд┐рдпрдВрддреНрд░рдХ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ:


  • рдПрдХ рдЖрд╡реЗрджрди рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ,
  • рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдореЙрдбрд▓ рдФрд░ рдХреМрди рд╕рд╛ рджреГрд╢реНрдп рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ,
  • рдЪрдпрдирд┐рдд рдореЙрдбрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ,
  • рдореЙрдбрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЪрдпрдирд┐рдд рджреГрд╢реНрдп рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ,
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рджреЗрдЦреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдХреБрдЫ рдЗрд╕ рддрд░рд╣ред рдЗрд╕ рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд▓рд┐рдВрдХ рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд░рдорд┐рдХ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЙрдбрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреБрдЫ рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдпреЗ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рд╡реНрдпреВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЙрддреНрддрд░ рдореЗрдВ рдмрджрд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ, рдПрдХ humanoid рдЕрдиреБрд░реЛрдз рдХреЛ templatizators рдХреЗ рд╕рд╛рде рдиреЗрддреНрд░рд╣реАрди рд╕рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ Android рдЕрдиреБрд░реЛрдз JSON рдПрдиреНрдХреЛрдбрд░ рдХреЗ рд╕рд╛рде рд╕рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


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


>>

рд╡рд╣рд╛рдБ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ


>> >>

рд╕рд╡рд╛рд▓ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рднреАрдЦ рдорд╛рдБрдЧрддрд╛ рд╣реИ: рдХреЗрд╡рд▓ рджреЛ рдпрд╛ рддреАрди рд╣реА рдХреНрдпреЛрдВ? рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдЙрддреНрддрд░ рд╣реИ, рдИрд╢реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдЬрд┐рддрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрддрдиреЗ рд╣реА рд▓реЗ рд▓реЛ!


рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдХрд▓рд╛рдХрд╛рд░ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ: рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛, рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рдХ, рд╡рд┐рднрд┐рдиреНрди рд░реЗрдВрдбрд░рд░реНрд╕, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдЬреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдордирднрд╛рд╡рди рд╣реИред


рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:


  • рдХрд╛рд░реНрдпрдХрд╛рд░реА рд╕реНрддрд░ MVC ( - ) рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рдВрдХ рдкрд┐рдЫрд▓реЗ рд▓рд┐рдВрдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдЧрд▓реЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
  • рдкрд╣рд▓реЗ рд▓рд┐рдВрдХ рдХрд╛ рдЗрдирдкреБрдЯ рдЖрд╡реЗрджрди рдЕрдиреБрд░реЛрдз рд╣реИред
  • рдЕрдВрддрд┐рдо рд▓рд┐рдВрдХ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ Scenario рдХрд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдирд╛рдо рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд▓реНрдк рдПрдХ рджреГрд╢реНрдп (рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ), рдПрдХ рдлрд┐рд▓реНрдЯрд░ (рдПрдХ рдбреЗрдЯрд╛ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ), рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдирд╛рдо рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИред


рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдЕрд░реНрдерд╛рддреН: рдкрд░рд┐рджреГрд╢реНрдп рдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдорд╛рди рд▓реА - рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЙрдбрд▓ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдХреЗрд╡рд▓ рджреЛ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпрд╛рдВ рд╣реИрдВ: рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ (рдЕрдиреБрд░реЛрдз-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ред рдФрд░ рдпрд╣ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдПрдорд╡реАрд╕реА рддреНрд░рдп рдХреЗ рд╕рднреА рдШрдЯрдХ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдФрд░ рдкреНрд░рдмрдВрдзрдиреАрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рднреА рдПрдХ рдФрд░ рд╕рдореНрдорд╛рди рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ - рдПрдорд╡реАрд╕реАрдПрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рд╢реБрджреНрдз рдЖрдВрддрд░рд┐рдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд░реНрдЧ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдореЛрдЯрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред


рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ MVC рдкреИрдЯрд░реНрди рдХреА рдПрдХ рдФрд░ рднрд┐рдиреНрдирддрд╛ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рднрд┐рдиреНрдирддрд╛ рдХреЛ MVCS - Model-View-Controller-Scenario ред


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


MVCS рдЙрджрд╛рд╣рд░рдг


рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдлреИрдЯ рдХреЛрд░реНрдЯреЛрд▓рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг MVCS рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рд╣рдо MVCS рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:


 $mvcs = new MvcsController(); 

MVCS рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдмрд╛рд╣рд░реА рд░рд╛рдЙрдЯрд░ рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд░рд╛рдЙрдЯрд░ рдХреЛ рдлреЙрд░реНрдо рдХреЗ рдпреВрдЖрд░рдЖрдИ рдХреЛ 'рдпреВрдЬрд░ / рд╣реЗрд▓реЛ / рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕' рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ:


 $requestAction = 'user/hello'; //   $requestParams = ['XXX']; //   -   

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ MVCS рдирд┐рдпрдВрддреНрд░рдХ URI рдХреЗ рдмрдЬрд╛рдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ MVCS рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 //   MVCS  URI  $mvcs->set('scenarios', [ 'user/hello' => 'UserModel > UserViewModel > view, hello', ..., ]); 

рдЖрдЗрдП рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдпрд╣ рдПрдХ '>' рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рддреАрди рдбреЗрдЯрд╛ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ:


  • 'UserModel' рдбреЛрдореЗрди рдореЙрдбрд▓ 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛' рдХрд╛ рдирд╛рдо рд╣реИ, рдореЙрдбрд▓ рдХрд╛ рдЗрдирдкреБрдЯ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдЧрд╛, рдЖрдЙрдЯрдкреБрдЯ рдореЙрдбрд▓ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛:
  • 'UserViewModel' рджреГрд╢реНрдп рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо рд╣реИ рдЬреЛ рдбреЛрдореЗрди рдбреЗрдЯрд╛ рдХреЛ рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ,
  • is рд╡реНрдпреВ, рд╣реИрд▓реЛ тАЩрдПрдХ PHP рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпреВ, рдЯреЗрдореНрдкрд▓реЗрдЯтАЩ рд╣реИ рдЬрд┐рд╕реЗ 'рд╣реИрд▓реЛ тАЩрдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

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


 //   UserModel $mvcs->set('UserModel', function($id) { $users = [ 1 => ['first' => '', 'last' => ''], 2 => ['first' => '', 'last' => ''], ]; return isset($users[$id]) ? $users[$id] : NULL; }); //   UserViewModel $mvcs->set('UserViewModel', function($user) { //    PHP  : 'echo "Hello, $name!"'; return ['name' => $user['first'].' '.$user['last']]; }); 

рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ! рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЙрд╕рдХреЗ рд╕рднреА рджреГрд╢реНрдпреЛрдВ (рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬреИрд╕реЗ 'рджреГрд╢реНрдп') рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдФрд░ рдХреБрдЫ рдирд╣реАрдВред


рдФрд░ рдЕрдм рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП MVCS рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ:


 //        $scenarios = $mvcs->get('scenarios'); $scenario = $scenarios[$requestAction]; //      ... //   'user/hello/1'  ' '   'hello' $requestParams = ['1']; $response = $mvcs->play($scenario, $requestParams); //   'user/hello/2'  ' '   'hello' $requestParams = ['2']; $response = $mvcs->play($scenario, $requestParams); 

PHP MVCS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ github.com рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг MVCS рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИред

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


All Articles