рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП php рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдп рд╣реИ:
getopt ред рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдпрд╣ CodeIgniter рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред
рдФрд░ рдЬрдм рд╕реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЦрд╛рд▓реА рд╕рдордп рдерд╛, рдХреБрдЫ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд┐рдЦрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛, рдЬреАрдердм (hg + bitbucket рдкрд░ рдмреИрдардХрд░) рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЬрд┐рджреНрджреА рдХреЛрдбрдЗрдЧреНрдиреЗрдВрдЯ рдФрд░ рдЙрд╕рдХреЗ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреА рдмреИрд╕рд╛рдЦреА рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ , рдЗрд╕ рдврд╛рдВрдЪреЗ рдкрд░ рдХреНрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓реЗрдЦрди рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдорд╛рдиреНрдп рдХрд░реЗрдВ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ) рдФрд░ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЛрдбрд┐рдЧреНрдирд┐рдЯрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдХреЗ рдЙрдкрдпреЛрдЧ
рджрд░рдЕрд╕рд▓, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ CodeIgniter рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдирдХ
Form_Validation рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред
рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:
1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
github рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ
* / рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред
2. рдлрд┐рд░ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдПрдВ рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
<?php if ( ! defined("BASEPATH")) exit("No direct script access allowed"); class Cli extends MY_Controller { public function __construct() { parent::__construct(); if(!$this->input->is_cli_request()) { show_404(); } } }
рдЙрд╕ рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдХреЛрдИ рднреА рдЦрд▓рдирд╛рдпрдХ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗ!
3. рдЕрдм рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ:
public function hello() {
рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдИ:
- arg рддрд░реНрдХ рдХрд╛ рдореБрдЦреНрдп рдирд╛рдо рд╣реИ (рдЙрджрд╛ред --name )ред
рдЕрдирд┐рд╡рд╛рд░реНрдп рдЕрдЧрд░ рдЙрдкрдирд╛рдо рдЕрдиреНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ - рдЙрдкрдирд╛рдо - рддрддреНрд╡ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо (рдЙрджрд╛ред -n )ред
рдЕрдирд┐рд╡рд╛рд░реНрдп рдЕрдЧрд░ arg рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ - рдорджрдж - рдорджрдж рдорд╛рдВрдЧрддреЗ рд╕рдордп рдПрдХ рд▓рд╛рдЗрди рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреА (рд╣рдорд╛рд░реЗ рд╕рд╛рде рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реИ)
- рдкреНрд░рдХрд╛рд░ - рддрд░реНрдХ рдХреЗ рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ: 0 - рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЗ рд▓рд┐рдП, 1 - рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдФрд░ 2 - рдЯреНрд░рд┐рдЧрд░реНрд╕ (рдмреВрд▓рд┐рдпрди) рдХреЗ рд▓рд┐рдПред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдФрд░ рдЯреНрд░рд┐рдЧрд░реНрд╕ рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рдореВрд▓реНрдп рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореВрд▓реНрдп FALSE рд▓реЗрдЧрд╛, рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреНрд░рд┐рдЧрд░ TRUE рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдирдкреБрдЯ рдореЗрдВ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рд╛рдордиреЗ рдЖрдПрдЧреА рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред
рдЗрд╕рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдлреЙрд░реНрдо_рд╡реИрд▓рд┐рдбреЗрд╢рди рдореЗрдВ!
if (!$this->command_line->valid_input())
рдпрджрд┐ рдпрд╣ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ - рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ:
print $this->command_line->get_help();
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдЬреИрд╕рд╛ рдХрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рддрдм рд╣рдо
get_argument () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд░реНрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЙрдирдХреЗ рдкреВрд░реНрдг рдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдо рд╕реЗ рджреЛрдиреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$this->command_line->get_argument('-n') === $this->command_line->get_argument('--name')
4. рдЕрдм рдЬрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЦреЛрд▓реЗрдВ рдФрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрдЦреЗрдВ:
php index.php cli home
рдЪреВрдВрдХрд┐ рдЖрдкрдиреЗ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдЖрдкрдХреЛ рдПрдХ рджреЛрд╕реНрддрд╛рдирд╛ рддрд░реАрдХреЗ рд╕реЗ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:
рдЙрдкрдпреЛрдЧ: php index.php cli рд╣реИрд▓реЛ [рд╡рд┐рдХрд▓реНрдк]
рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
-n, - рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо, рд╣рдо рд╣реИрд▓реЛ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ
рддреЛ, рдЖрдкрдХреЛ рдПрдХ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
php index.php cli home -n Habrahabr
рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛:
рд╣реЗрд▓реЛ рд╣рдмреНрд░рд╣рд╛рдм!
UPD: рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рдПрдХ рд▓рдВрдмреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЙрдирд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
php index.php cli home -n "Petr Ivanovich"
рд╣реИрд▓реЛ рдкреЗрдЯреНрд░реЛрд░ рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ!
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╣реБрдд рд╣реА рдЖрджрд┐рдо рд╣реИ, рдФрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдЖрдзрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдпрд╣ рдХреНрд░реЛрди рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рдордп рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореЙрдбрд▓ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рднреА рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрдЯ рдХрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рдирд╛ рдпрд╛ рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрддрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ред
рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрднреА рднреА рдХрд╛рдлреА рдХрдЪреНрдЪрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рдмрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реБрдирдХрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА, рдФрд░
рдЬреАрдердм рдкрд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ рднреА рдЦреБрд╢реА рд╣реЛрдЧреАред