
рдпрд╣ рд▓реЗрдЦ
рдорд┐рдЧреНрд░реЗрдЯрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдЬреЛ рдХреЛрдбрдЗрдЧреНрдирд┐рдЯрд░ рд╕рдВрд╕реНрдХрд░рдг 2.1.0 рдЕрдкрдбреЗрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
рд▓реЗрдЦ рдХреЗ
рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реАрдзреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЖрд╡реЗрджрди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреЗрд╡рд▓ рд▓реЙрдЧрд┐рди рджреНрд╡рд╛рд░рд╛, рдФрд░ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ, рддрджрдиреБрд╕рд╛рд░, рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП 503 рдЙрддреНрддрд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рд╣рдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрд┐рдХрдмреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдЗрдЯ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддреБрд░рдВрдд рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рд░реНрдЯ рдЬреЛрдбрд╝реЗрдВ
рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдХрд┐рдпрд╛ рдерд╛, рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рднреА рдореВрд▓
CI_Controller рдирд╣реАрдВ , рдмрд▓реНрдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд
MY_Controller рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд╣рд┐рдд рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓
% site_path% / рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЛрд░ / MY_Controller.php рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Controller extends CI_Controller { protected $db_update = FALSE;
рдиреЛрдЯ: рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреА рддрд░рд╣, рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдо рддреНрд░реБрдЯрд┐ рдХреЛ рдПрдбрдорд┐рди рдкреЗрдЬ (
рдПрдбрдорд┐рди рдХрдВрдЯреНрд░реЛрд▓рд░, рдЬреЛ
MY_Controller рд╡рд╛рд░рд┐рд╕
рдХрд░реЗрдВрдЧреЗ ) рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд░ рдЬрдЧрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЖрдЧреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреБрд░рд╛рдиреА рд╕рдВрд░рдЪрдирд╛ рд╣реИред рд╡реИрд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЗрд░реЗрдВрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛрдб рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ
рдбреЗрдХреЛрд░реЗрдЯрд░ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрджреНрдпрддрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдПрдХ рд╣реА
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╣реА рдорд╛рдорд▓рд╛ рд▓реЗрдВрдЧреЗред
рдЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХрдИ рд╡рд┐рд╡рд┐рдз рд╡рд┐рдзрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ - рдореИрдВ рдЕрднреА рднреА рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмреАрдЪ рдЗрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐
рдХреЛрдбрдЗрдЧреНрдирд┐рдЯрд░ рдХреЗ рд▓рд┐рдП
HMVC рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ (рд╣рдм рдкрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ
рдХрд╛ рдПрдХ
рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдерд╛)
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ рддрд╛рдХрд┐ рдЖрдк рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХреЗрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рдкреЗрдЬ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдЬрд┐рдХ
_remap рдореЗрдердб
рд╕рд╣реА рд╣реИ , рдЬрд┐рд╕реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдердбреНрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдПрдХ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдХреНрд╡реЗрд╕реНрдЯреЗрдб рдореЗрдердб рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рдПрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдХреБрдХреА рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ :
public function _remap($method, $params = array()) { if (!$this->m_user->authorised() && $method != 'index') { header('Location:/admin/');
рдпрд╣
рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐
m_user рдПрдХ рдРрд╕рд╛ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рднреА рддрд░реАрдХреЗ рд╣реИрдВ (рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ),
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд┐рдзрд┐ рдЧреИрд░-рд▓реЙрдЧ-рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рди рдлрд╝реЙрд░реНрдо рджрд┐рдЦрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди
рд▓реЙрдЧрдЖрдЙрдЯ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╡рд╣рд╛рдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВрдЧреЗ:
public function update_db() { $this->data['body'] = '<h1> </h1>'; if ( ! $this->migration->current()) { show_error($this->migration->error_string()); } $this->load->view('admin/default.phtml', $this->data); }
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рд╕рднреА рдЪреАрдЬреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреНрд▓рд╛рд╕ рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЕрдм рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдСрдЯреЛ-рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ (рдлрд╛рдЗрд▓
% site_path% / рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд┐рдЧ / рдСрдЯреЛрд▓реЛрдб.php ):
$autoload['libraries'] = array('database', 'session', 'migration');
рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓
% site_path% / рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд╝рд┐рдЧ / рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рднреА рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪрд╛рд▓реВ рд╣реИрдВ, рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкрде рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ (рд╕рдм рдХреБрдЫ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ
рдкрд┐рдЫрд▓реЗ рдПрдХ рдореЗрдВ рдерд╛ рд▓реЗрдЦ ):
$config['migration_enabled'] = TRUE; $config['migration_version'] = 1; $config['migration_path'] = APPPATH . 'migrations/';
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ 1 рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд░ рд▓реА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ
рдкрд┐рдЫрд▓реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд┐рдЦрд╛ рдерд╛ред
рдЕрдм рдЖрдк рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдПрдХ
рд╢реВрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рд╣реИ (рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди,
рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЗ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╕рдВрдХреЗрддрд┐рдд рд╕рдВрд╕реНрдХрд░рдг 0 рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреНрд▓реЗрдЯ рдмрдирд╛рдИ рдереА), рдФрд░ рдХреЛрдб рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдкрд░ рдЬрд╛рдХрд░ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдирдпрд╛ рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдмрд┐рдирд╛ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП!
рдмреЛрдирд╕ - рд╕реАрдПрд▓рдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрджреНрдпрддрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ,
рдХреНрд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рд╣рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬрдм рд╡реЗ рд╕рд╛рдЗрдЯ рдкрд░
рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рд╕реЗред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, CodeIgniter рдЕрдкрдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЪрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ
% site_path% / рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдирд┐рдпрдВрддреНрд░рдХреЛрдВ / cli.php рдХреЛ рдирд┐рдЬреА рдЪрд░
$ args рдХреЗ рд╕рд╛рде
рдмрдирд╛рдПрдВрдЧреЗ , рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рднреА рддрд░реНрдХ рд╣реЛрдВрдЧреЗ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдЙрд╕рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдирд╛рдо рдХреЛ рдЫреЛрдбрд╝рдХрд░ (рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрд╛рдЯ рджреЗрдВрдЧреЗ):
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Cli extends MY_Controller { private $args = array();
рд╡реИрд╕реЗ, рдореИрдВ рдЖрдкрдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЙрд╕ рдЬрдЧрд╣ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдЖрдпрд╛ рдерд╛ред рд╣рдо рд╕рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрд╡рд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ! рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рднреА рдпрд╣рд╛рдБ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдкрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдореБрдЭ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рдкрд▓рд╛рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public function migration() { if ( !is_array($this->args) || empty($this->args)) { print ( "Usage: php index.php cli migration [OPTIONS]\n\n" ); print ( "Options are:\n" ); print ( "-l, --last\t\tupdate database to the latest version\n" ); print ( "-c, --current\t\t show current versions of database and code\n" ); exit; } for ( $i=0; $i<count($this->args); $i++ ) { $arg = $this->args[$i]; if ( $arg=="-l" || $arg=="--last" ) { print "Updating your database to the latest version..\n"; if (!$this->migration->current()) { print $this->migration->error_string().'\n'; exit; } else print "Update complete!\n"; } elseif ( $arg=="-c" || $arg=="--current" ) { print 'Current code version is:\t'. $this->migration->get_fs_version().'\n'; print 'Current database version is:\t'.$this->migration->get_db_version().'\n'; } } }
рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ "
php /%index_dir%/index.php cli рдорд╛рдЗрдЧреНрд░реЗрд╢рди " рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреГрдкрдпрд╛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдк рдмрддрд╛рдПрдЧреАред рдпрджрд┐ рдЖрдк "
php /%index_dir%/index.php cli рдорд╛рдЗрдЧреНрд░реЗрд╢рди -l " рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧреАред
рдмреЗрд╢рдХ, рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдореВрд▓ рдмрд╛рддреЗрдВ рдЦреБрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдПрд▓рдЖрдИ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╢реЛрдзрди рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП '-r' рд╡рд┐рдХрд▓реНрдк (рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ) рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╣реЛрдорд╡рд░реНрдХ рд╣реЛрдЧрд╛)ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕, рдПрдХ рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрджреНрдпрддрди рддрдВрддреНрд░ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрддрдорд╛рди рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд╕рд╣рдорддрд┐ рджреЗрдВ, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдЕрдЧрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдХреЛрдб рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЕрд╕рдВрдЧрддрд┐ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрднрджреНрд░рддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреАрдбрд╝реЗ рджреЗрдЦреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рд╣реБрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдЗрдЯ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдЧрд╛ред
рдкреВрд░реНрдг рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВрднрд╛рдЧ I: рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди - рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЙрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЕрд╡рд▓реЛрдХрди