рдХреЛрд╣рд╛рдирд╛ 3.0 - рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ

рдПрдХ рдврд╛рдВрдЪрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрд╡рд╕рд░ рд╣реИ, рд▓реЗрдХрд┐рди ... рдПрдХ рдврд╛рдВрдЪрд╛ рдРрд╕рд╛ рд╣реА рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИред рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрд╣рдирд╛ 3.0, рдЬрд┐рд╕ рдкрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА, рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рдПрдХ рдбрд┐рдЧреНрд░реА рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдбреЛрдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ:

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

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╕рд░рд▓ рдХрджрдо рдЙрдард╛рдП рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдФрд░ рд╕рдорд╛рдирддрд╛ рдореЗрдВ рдПрдХ .htaccess рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реА рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдкрде рд╣реИ; рдХреЛрд╣рдирд╛ :: init рд╡рд┐рдзрд┐ рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ (рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкрде рднреА рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╕реЗрдЯ рдХрд░реЗрдВ (рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП) 'index_file' => FALSE; рдмрд╛рдж рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП ...
рдЕрдм рд╣рдо bootstrap.php рдХреЗ рдЕрдВрдд рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рдХрд╣рд╛рдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЖрдорддреМрд░ рдкрд░ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд┐рддрдиреЗ рдорд╛рд░реНрдЧ рд╣реИрдВ? рджрд╕? рдмреАрд╕? Ko3.0 рдкрд░ рдореЗрд░реЗ рдЖрдЦрд┐рд░реА рдЖрд╡реЗрджрди рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ 30 рдереЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдбреЙрдлреАрдЧрд╛, рдпрд╣реАрдВ, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк.рдлрдкреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред рдмрд╛рд╣рд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛? рд╣рдо рдЙрди рд╕рднреА рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ:
рдЖрд╡реЗрджрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдлрдкреА рдФрд░ рдкреВрд░реЗ рд░реВрдЯ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░реЗрдВ :: рд╕реЗрдЯ ('рдбрд┐рдлреЙрд▓реНрдЯ') рд╡рд╣рд╛рдВ ... рдФрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЗрдВ рдЕрдкрдиреЗ рдкреВрд░реНрд╡ рд╕реНрдерд╛рди рдкрд░ред рд╣рдо рдмрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ APP_ATH.'routes.php ';
рдЕрдм рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ (рдПрдХ рдХрд┐ рдХреЛрд╣рдирд╛_рдХрдВрдЯреНрд░реЛрд▓рд░) рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ () рдФрд░ рдмрд╛рдж () рдХреЗ рдЕрджреНрднреБрдд рддрд░реАрдХреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреНрд░рдорд╢рдГ, рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ "рдирд┐рдХрд╛рдп" рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╣рдо рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдореЙрдбреНрдпреВрд▓ (рдСрдХреНрдЯреЛ) рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ - рдХрдо рд╕реЗ рдХрдо рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд▓реЙрдЧрд┐рди рдХреЗ рд▓рд┐рдПред рдореИрдВ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?
рдФрд░ рдЪрд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЛрд╣рдирд╛_рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣реАрдВ (рд╕рдВрднрд╡) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
<?php class Controller extends Kohana_Controller { /** * @var auth property with instance of "Auth" module */ public $auth = NULL; /** * @var user property with object of user */ public $user = FALSE; public function before() { parent::before(); $this->auth = Auth::instance(); $this->user = $this->auth->get_user(); } public function after() { parent::after(); } } 

рдФрд░ рдирд╛рдо / рдирд┐рдпрдВрддреНрд░рдХ рдирд╛рдо рдХреЗ рддрд╣рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХрдХреНрд╖рд╛рдУрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ рд╕рд╣реЗрдЬреЗрдВ
рдЕрдм рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдерд╛рди рдкрд░ рд╣рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди! рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛ! рдЕрд╕рд▓ рдореЗрдВ - рдореБрдЦреНрдп рдПрдХ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдФрд░ рдПрдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рд╡рд╛рдкрд╕ред рдореИрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛, рдпрджрд┐ рдЖрдк рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЧреЗ рдкрдврд╝рддреЗ рд╣реИрдВ:
рдШрд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдкрддреЗ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ, рд░реЗрдлрд░рд░ рд▓рд╛рдЗрди рд╕реЗ рдкрддреЗ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдирд╛, рдпрджрд┐ рд╕рднреА рдкрд░ред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЦреНрдп рдПрдХ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрдм рддрдХ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрднреА рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрдпреЛрдЧреА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ) - рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз (HMVC рдФрд░ рд╡рд╣ рд╕рдм ...) рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рдФрд░ рдореБрдЦреНрдп рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣рдо рдореБрдЦреНрдп рдЕрдиреБрд░реЛрдз рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдКрдкрд░ рджрд┐рдП рдЧрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ (рд╣рдо рдкрд╣рд▓реЗ () рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдж рдПрдХ рд╣реА рдЖрд╡реЗрджрди / рд╡рд░реНрдЧ / рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕рднреА рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
  public function go_home($current_request_only = FALSE) { $url = Route::url('default', NULL, TRUE); $this->go($url, $current_request_only); } public function go_back($current_request_only = FALSE) { Validate::url(Request::$referrer) OR $this->go_home($current_request_only); $this->go(Request::$referrer, $current_request_only); } private function go($url, $current_request_only) { $request = ($current_request_only) ? $this->request : Request::instance(); $request->redirect($url); } 

рдореИрдВ рдереЛрдбрд╝рд╛ рддрд░реАрдХреЗ рд╕рдордЭрд╛рдКрдВрдЧрд╛:
go_home () рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ URL рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧреЛ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ
go_back () рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдЕрдиреБрд░реЛрдз :: $ рд╕рдВрджрд░реНрднрдХрд░реНрддрд╛ рд╕реЗ URL рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо go_home () рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдмрд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ
рдЧреЛ () рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЕрдиреБрд░реЛрдз :: рдЙрджрд╛рд╣рд░рдг) (рдореБрдЦреНрдп рдЕрдиреБрд░реЛрдз рд╣реИ, рд▓реЗрдХрд┐рди $ рдпрд╣-> рдЕрдиреБрд░реЛрдз рднреА рд╕рдВрднрд╡ рд╣реИ)

рдЕрдм рдЬрдм рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ (рдПрдЪрдПрдорд╡реАрд╕реА / рд╕рд░рд▓) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рддреЛ рдЕрдиреБрд░реЛрдз рдХрдХреНрд╖рд╛ рдореЗрдВ рдереЛрдбрд╝реА рдЪреВрдХ рдХреЛ рдЦрддреНрдо рдХрд░реЗрдВред рдЪреВрдХ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрд╣рдирд╛ 3.0 рдореЗрдВ, рдХреЛрд╣рдирд╛ 3.1 рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдиреБрд░реЛрдз рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ - рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз :: $ is_ajaxред
рдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХрдХреНрд╖рд╛рдПрдВ / request.php рдмрдирд╛рдПрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:
 class Request extends Kohana_Request { public function is_initial() { return $this === Request::instance(); } } 

рдЪреВрдВрдХрд┐ рдЕрдиреБрд░реЛрдз :: рд╡рд░реНрддрдорд╛рди () рдореБрдЦреНрдп рдЕрдиреБрд░реЛрдз (рд╕рд┐рдВрдЧрд▓реЗрдЯреЛрди) рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБ рдпрд╣ $ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ - рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдЬреЛ рди рдХреЗрд╡рд▓ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдЧрд╛, рдмрд▓реНрдХрд┐ рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЪрд▓реЛ рдЗрд╕реЗ рдХрдВрдЯреНрд░реЛрд▓рд░_рдлреЙрд░реЗрд╕реНрдЯ рдХрд╣рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрд╣рдирд╛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╕реНрд╡рд╛рдж рдХреА рдмрд╛рдд рд╣реИ, рдХреБрдЫ рднреА рдирд╛рдо рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдмрд╕ рдЖрдк рдХрд┐рд╕ рд╡рд░реНрдЧ рд╕реЗ рдмрд╛рдХреА рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ)ред
рдХрдВрдЯреНрд░реЛрд▓рд░_рдлреНрд░рдВрдЯ рд╣рдореЗрдВ рдПрдХ "рдЖрд╡рд░рдг" рдФрд░ "рд╕рд╛рдордЧреНрд░реА" рдореЗрдВ рдкреВрд░реЗ рджреГрд╢реНрдп рдХреЗ рдЯреВрдЯрдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдПрдХ рдЖрд╡рд░рдг рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдорд╛рд░реНрдХрдЕрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд, рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╕рднреА-рд╕рднреА-рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рдордЧреНрд░реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ_рдлреНрд░рдВрдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЬрд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдмрдирд╛рдПрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="author" content="Roman Chvanikoff" /> <title><?php echo $title; ?></title> </head> <body> <?php echo $content; ?> </body> </html> 

рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдЖрд╡рд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА ($ рд╕рд╛рдордЧреНрд░реА) рдПрдореНрдмреЗрдб рдХреА рдЬрд╛рдПрдЧреАред
рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / index.php рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ
рдЕрдм рдХреЛрд╣рд╛рдирд╛ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ, рд╕реНрд╡рд╛рдЧрдд / рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдордЧреНрд░реА рджреГрд╢реНрдп рдмрдирд╛рдПрдВ
 <h1>Welcome!</h1> 

рдФрд░ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / рд╕реНрд╡рд╛рдЧрдд / index.php рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ
рджрд░рдЕрд╕рд▓, рд▓реЗрдЦ рдХреА рдЗрд╕ рдкрдВрдХреНрддрд┐ рд╕реЗ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдЧрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрд╡рд░рдг рдХреНрдпрд╛ рд╣реИ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреНрдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ_рдлреНрд░рдВрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдЖрдЗрдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрдВрдбреЗрдХреНрд╕ рд░реИрдкрд░ рдХреЛ рд╕рдм рдХреБрдЫ рд╕реМрдВрдк рджреЗрдВ рдпрджрд┐ рд░реИрдкрд░ рдХрд╛ рдирд╛рдо рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЖрдк рдХрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рддрд░реНрдХ рдХреНрдпрд╛ рд╣реИ)ред
 class Controller_Front extends Controller { /** * @var layout wrapper of content for final output */ public $layout = 'index'; /** * @var content controller-generated output */ public $content; /** * @var errors all logic errors (including Validate errors) should be stored here */ public $errors; /** * @var post Validate object of _POST */ public $post; /** * @var view_path define what folder should be used to generate Views * values: * NULL - View::path will be generated as name of called controller * FALSE - View::path will not affect views generation * string - View::path will have value of the view_path property */ public $view_path = NULL; public function before() { parent::before(); $this->layout = View::factory($this->layout); $this->layout->set_global('user', $this->user); $this->post = Validate::factory($_POST); // Doubts? Look at view_path property definition if (is_null($this->view_path)) { View::$view_path = $this->request->controller; } elseif ($this->view_path) { View::$view_path = $this->view_path; } } public function after() { /** * Clear View "environment" */ View::$view_path = NULL; if ( ! Validate::not_empty($this->errors)) { $this->errors = NULL; } else { // $this->errors should be an array to pass it as argument to View. is_array($this->errors) OR $this->errors = array($this->errors); // $this->errors is a View now $this->errors = View::factory('errors', array('errors' => $this->errors)); } // $this->content can be a simple string or something like that so we check if it is a View file if ($this->content instanceof View) { // Append post-data $this->content->post = $this->post; // Append errors $this->content->errors = $this->errors; } // If request is initial - return layout with attached content if ($this->request->is_initial() AND ! Request::$is_ajax) { // Append content to layout $this->layout->content = $this->content; // Set response $this->request->response = $this->layout; } else { // Set response as controller-generated output $this->request->response = $this->content; } parent::after(); } } 

рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреБрдЫ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ :: $ view_path - рдпрд╣ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдореЗрдВ $ $ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдПрдХ рд╣реА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рднреАрддрд░ рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛- рд╕рд╛рдордЧреНрд░реА = рджреГрд╢реНрдп :: рдХрд╛рд░рдЦрд╛рдирд╛ ('рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рд╕рдВрдкрд╛рджрди'); рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ $ рдЗрд╕ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ-> рд╕рд╛рдордЧреНрд░реА = рджреГрд╢реНрдп :: рдХрд╛рд░рдЦрд╛рдирд╛ ('рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ');
рд╡реИрд╕реЗ, рдЖрдЗрдП рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╡рд┐рд╕реНрддреГрдд рдХрд░реЗрдВ - рдЕрдиреНрдпрдерд╛, рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ?
 class View extends Kohana_View { /** * @staticvar view_path a directory that will be used to generate views */ public static $view_path = NULL; /** * Sets the view filename. * * $view->set_filename($file); * * @param string view filename * @return View * @throws Kohana_View_Exception */ public function set_filename($file) { $directory = 'views'; if ( ! is_null(View::$view_path)) { $directory .= DIRECTORY_SEPARATOR.View::$view_path; } if (($path = Kohana::find_file($directory, $file)) === FALSE) { throw new Kohana_View_Exception('The requested view :file could not be found in :directory', array( ':file' => $file, ':directory' => $directory, )); } // Store the file path locally $this->_file = $path; return $this; } } 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреНрд░реЛрд▓рд░_рдлреЙрд░реЗрд╕реНрдЯ рд╕реЗ рдЗрд╕ рдмрджрд▓реЗ рд╣реБрдП рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдВ рд░реБрдХрдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреНрд▓рд╛рд╕реЗрд╕ / view.php рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡ рдХрд░реЗрдВ, рдХрдВрдЯреНрд░реЛрд▓рд░_рдлреНрд░рдВрдЯ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреНрд▓рд╛рд╕реЗрд╕ / рдХрдВрдЯреНрд░реЛрд▓рд░ / рдлреНрд░рдВрдЯ.php рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ " рд╣рдо рдЖрдЧреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред "

рд╕реНрд╡рд╛рдЧрдд рдирд┐рдпрдВрддреНрд░рдХ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХрдХреНрд╖рд╛рдПрдВ / рдирд┐рдпрдВрддреНрд░рдХ / рд╕реНрд╡рд╛рдЧрдд.php) рдЦреЛрд▓реЗрдВ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ_рдлреЙрд░реЗрд╕реНрдЯ рддрдХ рдмрдврд╝рд╛рдПрдБ, рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдмрджрд▓реЗрдВ $-> рдЕрдиреБрд░реЛрдз-> рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = 'рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!'ред $ рдЗрд╕ рдкрд░-> рд╕рд╛рдордЧреНрд░реА = рджреГрд╢реНрдп :: рдХрд╛рд░рдЦрд╛рдирд╛ ('рд╕реВрдЪрдХрд╛рдВрдХ');

рдЕрдм, рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрддреЗ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп / рд╕реНрд╡рд╛рдЧрдд / index.php рджреЗрдЦреЗрдВ рдлрд╝рд╛рдЗрд▓, рдПрдХ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп / index.php рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ред

рдЕрдВрддрднрд╛рд╖рдг

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

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

рдпреБрдкреАрдбреА:
рджреГрд╢реНрдп рдлрд╝рд╛рдЗрд▓ рджреГрд╢реНрдп / рддреНрд░реБрдЯрд┐рдпрд╛рдБ .php рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
 <ul class="errors"> <?php foreach ($errors as $error) : ?> <li><?php echo $error; ?></li> <?php endforeach; ?> </ul> 

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


All Articles