рдЫреЛрдЯрд╛ рд╕рд╛ рдкрд░рд┐рдЪрдп
рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдЬреНрдЮрд╛рди рдЕрдВрддрд░рд╛рд▓ рднрд░рдиреЗ рдХрд╛ рд╕рдордп рдерд╛ рдФрд░ PHP рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ 5.2 рдФрд░ 5.3 рдХреЗ рдмреАрдЪ рдХрд╣реАрдВ рд░рд╣рд╛ рдФрд░ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдирд╛рдо рд╕реНрдерд╛рди, рд▓рдХреНрд╖рдг рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд░реЗ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдЬрдирд░реЗрдЯрд░ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝рд╛, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░
рд╣реИрдмреЗрд░рд╛ рдХреЗ
рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ , рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ - рд╡реЗ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рдХреИрд╕реЗ рд░рд╣рддреЗ рдереЗ?
рдореИрдВ рдЗрд╕ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрдо рд╕реЗ рдХрдо рдирдП рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ php.net рдкрд░ рдЬрдирд░реЗрдЯрд░ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИ рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкреВрд░реЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдареАрдХ рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдкрд╛рда, рдереЛрдбрд╝рд╛ рдХрдо рдХреЛрдб, рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВред рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
UPD1 : рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдмреЛрд▓реЗ рдЧрдП рдЕрд╕реНрдкрд╖реНрдЯ рд╢рдмреНрджреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред
UPD2 : рдЬрдмрд░рди рдмреНрд░реЗрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд
рдореБрдЭреЗ рддреБрд░рдВрдд рдореБрдЦреНрдп рдмрд╛рдд рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬрдирд░реЗрдЯрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ рдХреБрдЫ рдирдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ PHP 5.5 рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рдЬрдирд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрддреА рд╣реИред рдЬрд╣рд╛рдВ рднреА рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ, рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$f = fopen($file, 'r'); while ($line = fgets($f)) { doSomethingWithLine($line); }
рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрд╛рдп рд╣реИ, рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЕрдЬреАрдм рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рд╛рд░ рдЪрд╛рд╣рд┐рдП? рдПрдХ рд╕рд╛рд░ рд╕реНрд░реЛрдд рд╕реЗ рддрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд╣рддреЗ рд╣реИрдВред рд╣рд╛рдВ, рдЖрдЬ рдпрд╣ рдПрдХ рдлрд╛рдЗрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрд▓ рд╣рдо рддрдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдХреБрдЫ рдФрд░ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ - рд╣рдо рдПрдХ рд╕рд░рдгреА рдпрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдХ рд▓реМрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рд░рдгреА рдХреЛ рд▓реМрдЯрд╛рдиреЗ рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 30 рдЬреАрдмреА рдлрд╝рд╛рдЗрд▓ рд╣реИ?), рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╢рд╛рдпрдж рд╣рдо рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдбреЗрдЯрд╛ рдХрд╛ рдЕрдВрддрд╣реАрди рд╣рд┐рд╕реНрд╕рд╛ рд▓реМрдЯрд╛рдПрдВ рдФрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдзрд╛рд░рд╛ рдХрдм рд╕рдорд╛рдкреНрдд рд╣реЛрдЧреА, рдпрджрд┐ рдЖрдк рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ)ред
рдЗрд╕рд▓рд┐рдП,
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдБ рдмрдиреА рд╣реБрдИ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PHP рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддреИрдпрд╛рд░ рд╡рд░реНрдЧ рд╣реИ -
SPLFileObject ред рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХреБрдЫ рд▓рд┐рдЦреЗрдВред
class FileIterator implements Iterator { protected $f; public function __construct($file) { $this->f = fopen($file, 'r'); if (!$this->f) throw new Exception(); } public function current() { return fgets($this->f); } public function key() { return ftell($this->f); } public function next() { } public function rewind() { fseek($this->f, 0); } public function valid() { return !feof($this->f); } }
рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫред рдпрджреНрдпрдкрд┐ рдпрджрд┐ рд╣рдо рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдЗрдЯреНрд░реЗрдЯрд░ рдХрд╛ рдареАрдХ-рдареАрдХ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЛрд╣рд░реА рдХреЙрд▓ () рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рдЙрд╕реА рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрдЧреАред
рдореИрдВрдиреЗ (рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ, рдПрдХ "рдЕрдиреБрд╡рд╛рджрдХ" рдирд╣реАрдВ) рдиреЗ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдХрд┐ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрдЧрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЪрд▓реЛ рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреБрдирд░рд╛рд╡реГрддреНрдд рдмрдирд╛рддреЗ рд╣реИрдВред
class FileIterator implements Iterator { protected $f; protected $data; protected $key; public function __construct($file) { $this->f = fopen($file, 'r'); if (!$this->f) throw new Exception(); } public function __destruct() { fclose($this->f); } public function current() { return $this->data; } public function key() { return $this->key; } public function next() { $this->data = fgets($this->f); $this->key++; } public function rewind() { fseek($this->f, 0); $this->data = fgets($this->f); $this->key = 0; } public function valid() { return false !== $this->data; } }
рднрдЧрд╡рд╛рди, рдПрдХ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬреИрд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛, рдФрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЕрднреА рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рдЕрдм, рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдФрд░ рднреА рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рдордЭрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛ред рдЖрдЗрдП рдЬрдирд░реЗрдЯрд░реЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВред
function getLines($file) { $f = fopen($file, 'r'); if (!$f) throw new Exception(); while ($line = fgets($f)) { yield $line; } fclose($f); }
рдмрд╣реБрдд рдЖрд╕рд╛рди! рд╣рд╛рдВ, рдпрд╣ рд▓рдЧрднрдЧ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЕрдкрд╡рд╛рдж рдФрд░ рдЙрдкрдЬ рдХреАрд╡рд░реНрдб рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рддреЛ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рдЕрд╢рдХреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдЬ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреАрдПрдЪрдкреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ - рдПрдХ рдЬрдирд░реЗрдЯрд░ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЬрдирд░реЗрдЯрд░ рдЗрдЯреНрд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЖрдк рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
foreach (getLines("someFile") as $line) { doSomethingWithLine($line); }
рдпрд╣рд╛рдБ рдкреВрд░реА рдЯреНрд░рд┐рдХ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЬреИрд╕рд╛ рдЪрд╛рд╣реЗрдВ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдЙрд╕реЗ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ (
рдЙрдкрдЬ , рдпреЗрд▓реНрдбрди, рдпреЗрд▓реНрдбрдирдЯ ... рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрддреЗ рд╕рдордп рдЕрдзрд┐рдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП) рдЬрдм рднреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ рдПрдХ рдирдпрд╛ рдореВрд▓реНрдпред рддреЛ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЬрдм рд╣рдо getLines () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ PHP рдЙрдкрдЬ рдХреАрд╡рд░реНрдб рдХреА рдкрд╣рд▓реА рдмреИрдардХ рддрдХ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдпрд╛рдж рд░рдЦреЗрдЧрд╛ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ред рдлрд┐рд░, рдЬрдирд░реЗрдЯрд░ рдкрд░ рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реЗ рдпрд╛ рдЗрдЯреНрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), PHP рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдпрд╣ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдП, рдФрд░ рдлрд┐рд░ рд╕реЗ, рдЕрдЧрд▓реЗ рдЙрдкрдЬ рдпрд╛ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЕрдВрдд, рдпрд╛ рд╡рд╛рдкрд╕реАред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЕрдм рдЖрдк рдПрдХ рдЙрдкрдпреЛрдЧреА рдЬрдирд░реЗрдЯрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
function doStuff() { $last = 0; $current = 1; yield 1; while (true) { $current = $last + $current; $last = $current - $last; yield $current; } }
рд╢рд╛рдпрдж рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдВрддрд╣реАрди рдЪрдХреНрд░ рд╕рдм рдХреБрдЫ рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрдЧрд╛ред рд╣рд╛рдВ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдирдВрдд рд▓реВрдк рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВ - рдпрд╣ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрдирд░реЗрдЯрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИред Iterators рдЕрднреА рднреА рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИрдВред
рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг
рд╣рдореЗрдВ рдЕрдкрдирд╛
ArrayObject рдмрдирд╛рдирд╛
рд╣реЛрдЧрд╛ ред рдЗрдЯреНрд░реЗрдЯрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЪрд▓реЛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ рдЪрд╛рд▓ рдЪрд▓реЗрдВред
IteratorAggregate рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - getIterator ()ред рдЪреВрдВрдХрд┐ рдЬрдирд░реЗрдЯрд░ рдПрдХ рд╡рд╕реНрддреБ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
class ArrayObject implements IteratorAggregate { protected $array; public function __construct(array $array) { $this->array = $array; } public function getIterator() { foreach ($this->array as $key => $value) { yield $key => $value; } } }
рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП! рдЕрдм рд╣рдо рдЬрдирд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХреБрдВрдЬреА рдПрдХреНрд╕реЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рд╕рд░рдгреА рдХреЗ рд╕рднреА рдЧреБрдгреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рднреЗрдЬреЗрдВ
рдЬрдирд░реЗрдЯрд░ рдЖрдкрдХреЛ рднреЗрдЬрдиреЗ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдХрдХреНрд╖рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдмрд╕ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
function createLog($file) { $f = fopen($file, 'a'); while (true) {
рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рддреЗрдЬред рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдмреАрдЪ рдирд┐рдпрдВрддреНрд░рдг рдлреЗрдВрдХрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдПрдХ рдХрддрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдкреИрдХреЗрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдФрд░ рднреЗрдЬрддреА рд╣реИред рдХрднреА-рдХрднреА рдРрд╕реЗ рдХрд╛рд░реНрдп рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рд╣рдо рдПрдХ рдмрд╛рдЗрдирд░реА рд╕реНрдЯреНрд░реАрдо рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдкреИрдХреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
function fetchBytesFromFile($file) {
рдпрд╣ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реА рд╕рдордп рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ + рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдиреА рд╣реБрдИ рд╣реИред
рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рд┐рдП!
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЕрдиреБрдХрд░рдг рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХреЛ рдПрдХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдХреЗрдд рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣ рдЕрдЧрд▓реЗ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗред рд╣рдо рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ (рд╣рдо рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
function step1() { $f = fopen("file.txt", 'r'); while ($line = fgets($f)) { processLine($line); yield true; } } function step2() { $f = fopen("file2.txt", 'r'); while ($line = fgets($f)) { processLine($line); yield true; } } function step3() { $f = fsockopen("www.example.com", 80); stream_set_blocking($f, false); $headers = "GET / HTTP/1.1\r\n"; $headers .= "Host: www.example.com\r\n"; $headers .= "Connection: Close\r\n\r\n"; fwrite($f, $headers); $body = ''; while (!feof($f)) { $body .= fread($f, 8192); yield true; } processBody($body); }
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬрдирд░реЗрдЯрд░ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдорд╛рди рд╣реИрдВред рд╡реЗ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЬрд░рд╛ рд╕реЛрдЪрд┐рдП, рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
function xrange($min, $max) { for ($i = $min; $i < $max; $i++) yield $i; }
рдЫреЛрдЯрд╛ рдФрд░ рд╕рд░рд▓ред рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╣реБрдд рд╣реА рдЙрддреНрдкрд╛рджрдХ - рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ред
рдореВрд▓ рд▓реЗрдЦ - рдПрдВрдереЛрдиреА рдлреЗрд░рд╛рд░рд╛ @
blog.ircmaxell.comрдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЬрдм рдЬрдирд░реЗрдЯрд░ (рдпрд╛ рдмрд▓реНрдХрд┐, рдлреЙрд░рдЪреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐) рдЬрдмрд░рди рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░реЗрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЬреЛрдЦрд┐рдо рд╣реИ рдХрд┐ рдлреЗрдХрд▓реЛрдЬрд╝ рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрдирд░реЗрдЯрд░ рдмрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ"ред
рдЕрдЬреАрдм (
# ) рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП
рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рд╣реИ {...} рдЕрдВрдд рдореЗрдВ {...} рдирд┐рд░реНрдорд╛рдг, рдЬрд╣рд╛рдВ рдЕрдВрдд рдореЗрдВ рд╣рдо рдЦреБрд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВред рдЬреЗрдирд░реЗрдЯрд░ рдХреА рдЦреЛрдЬ рдкреВрд░реА рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдмреНрд▓реЙрдХ
рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рд╣реИ: рдпрджрд┐ рдЬрдирд░реЗрдЯрд░ рдХреА рдЦреЛрдЬ рдЕрдВрдд рддрдХ (рдмрд┐рдирд╛ рдмреНрд░реЗрдХ рдХреЗ) рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рддреЛ рдЕрдВрдд рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рдж рдХрд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ
- рднрд╛рд╖рд╛ рдореЗрдВ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рди рдЬреЛрдбрд╝реЗрдВ
- рддреЗрдЬрд╝ *
- рдЬрдирд░реЗрдЯрд░ рдХреА рдмрд╣рд╛рд▓реА рдЕрдВрддрд┐рдо "рд░рд┐рд▓реАрдЬ" рдЙрдкрдЬ рд╕реЗ рд╣реЛрддреА рд╣реИ
- рдЖрдк рдЬрдирд░реЗрдЯрд░ рдФрд░ рдереНрд░реЛ (рд╡рд┐рдзрд┐) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рди рдФрд░ рдЕрдкрд╡рд╛рдж рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ
- рдЬрдирд░реЗрдЯрд░ рдпреВрдирд┐рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ
- рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдо рдХреЛрдб, рдбрд┐рдЬрд╛рдЗрди рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди
*
рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░
рдкрд░ ред
рдПрдХ рдмрдбрд╝реА рдЦреЛрдЬ рдХреЗ рд╕рд╛рде, рдЬрдирд░реЗрдЯрд░ рддреЗрдЬ рд╣реЛрддреЗ рд╣реИрдВред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 4 рдЧреБрдирд╛ рддреЗрдЬ рдФрд░ рдирд┐рдпрдорд┐рдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 40% рдЕрдзрд┐рдХ рддреЗрдЬ рд╣реИред рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рд╣реИрдВред
рдпрджрд┐ рд╕рдореБрджрд╛рдп рдЕрдиреБрд╡рд╛рдж рдХреЛ рдордВрдЬреВрд░реА рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рдирддрд╛ рд╣реИ (рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдмрдХрд╡рд╛рд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХрд╛ рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ), рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрднреА-рдХрднреА рдЕрдиреНрдп рд▓реЗрдЦреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ phpmaster рдкрд░ рдЕрдм рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓реЗрдЦреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╕рд╛рде рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА, рдирд┐рд░реНрджреЗрд╢, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкрд╛рда рдореЗрдВ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рд╣реА рдЦреБрд╢реА рд╣реЛрдЧреАред
PS рдЕрдиреБрд╡рд╛рдж рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдмрдлрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЦреЛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд┐рд╕реА рдХреЛ рднреНрд░рдорд┐рдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЛрдб рдкрд░ рдирд┐рд╖реНрдкрдХреНрд╖ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдкрд░рд╣реЗрдЬ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдореЗрд░реЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реВрдВрдЧрд╛ред