
MVC рдкреНрд░рддрд┐рдорд╛рди рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдХреЗ рдФрд░ рдЕрдореВрд░реНрдд рдмрдирд╛рдХрд░ рдХреЛрдб рд╕рдорд░реНрдерди рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░, рдореЛрдЯреЗ рдореЙрдбрд▓ рдФрд░ рдкрддрд▓реЗ рдирд┐рдпрдВрддреНрд░рдХ (рдЙрд░реНрдл рдлреИрдЯ рдореЙрдбрд▓ рдФрд░ рд╕реНрдХреАрдиреА рдирд┐рдпрдВрддреНрд░рдХ) рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ, рдЕрд░реНрдерд╛рддреН рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрдзрд╛рд░рд╢рд┐рд▓рд╛ рдкрд░ рдЖрд░рд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ - рдореЗрдореЛрд░реА рдЦрдкрдд рдореЗрдВред ORM (рдпрд╛ ActiveRecord рдкреИрдЯрд░реНрди) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░, рдЬреЛ рдХрд╛рдлреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджрд░рдЕрд╕рд▓, рдпрд╣рд╛рдВ рджреЛ рдХреЛрдб рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
if ($row['status'] == 3) {
class Post { const AUTH_ONLY = 3; public $status; public function isAuthOnly() { return $this->status == self::AUTH_ONLY; } } if ($post->isAuthOnly()) {
рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЕрдЪреНрдЫрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдЖрдкрдХреЗ рдмрд╛рдж рд░рд╣реЗрдЧрд╛, рддреЛ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рднреА рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░:
рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдорддреМрд░ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордпред рдбреЗрдЯрд╛рдмреЗрд╕ (ORM) рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдЕрдореВрд░реНрддрддрд╛ рдХреЛ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддреНрдпреЗрдХ рдЪрдпрдирд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдЕрддреНрдпрдВрдд рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╣реИред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд╢рдВрд╕рд╛ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ:
рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдХрдИ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЕрд▓рдЧ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде, рд╣рдо рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдореВрд░реНрдд рдХреА рдкрд░рдд рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдореЙрдбрд▓ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред
рдЪреВрдВрдХрд┐ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреА рд╕рд░рдгреА рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рдкрд╣рд▓рд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдЪрдпрди рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝рддреЗ рд╣реБрдП рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
$post = new Post; $result = mysqli_query('SELECT * FROM posts'); while ($row = mysqli_fetch_array($result)) { $post->setAttributes($row);
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреБрдЫ рднрд╛рд░ рдХреА рдХреАрдордд рдкрд░, рд╣рдо рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХреЛ рдмрдврд╝рд╛рдП рдмрд┐рдирд╛ рдореЙрдбрд▓ рдХреЗ рд╕рднреА рдлрд╛рдпрджреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣реЗ рдмрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдорд╛рдзрд╛рди, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╛рд░рджрд░реНрд╢реА, рдкрд░реНрдпрд╛рдкреНрдд рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рд╣реЛрдЧрд╛ред рд╣рдо Iterator'a рдХреА рд╢рдХреНрддрд┐ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ:
class PostIterator implements Iterator { private $_model; private $_result; private $_row_num = 0; private $_total_rows = 0; public function __construct(Post $model) { $this->_model = $model; } public function selectAll() {
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдпрд╣рд╛рдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИрдВред рдирддреАрдЬрддрди, рд╣рдордиреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬреЛ рд╣рдореЗрдВ рдореЙрдбрд▓ рд▓реЙрдЬрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝реА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЦрдкрдд рдХреА рдЧрдИ рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд "рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛" рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рдХрдИ рдиреБрдХрд╕рд╛рди рдФрд░ рдЕрдбрд╝рдЪрдиреЗрдВ рд╣реИрдВ:
1. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбрд▓ (рдСрдмреНрдЬреЗрдХреНрдЯ) рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЪрдХреНрд░ рдХреЗ рдЕрдВрджрд░ рдЫрджреНрдо рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЪрдХреНрд░ рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдкреВрд░реЗ рдмрд╛рдж рдХреЗ рдЪрдХреНрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред
2. рдбреЗрдЯрд╛рдмреЗрд╕ (mysqli_data_seek) рд╕реЗ рдПрдХ рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрдкрдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдореЗрдВ "рдЕрд╕рд╛рдзрд╛рд░рдг рд╕рд╣реА" рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо "рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ"ред рдЪреВрдВрдХрд┐ рдЯреНрд░реИрд╡рд░реНрд╕реЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ mysqli_result рдореЗрдВ рдХреЗрд╡рд▓ PHP 5.4 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реАрдзреЗ Iterator рдореЗрдВ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА mysqli_result рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░рд┐рдгрд╛рдо рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рд╣реА, рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
3. рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдореЗрдВ рдЗрдЯреНрд░реЗрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рдПрдХ рдореЙрдбрд▓ (рдкреЛрд╕реНрдЯ) рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
4. рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдХрднреА-рдХрднреА ArrayAccess рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (mysqli_data_seek рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class PostIterator implements Iterator { private $_model; private $_result; private $_row_num = 0; private $_total_rows = 0; private $_current_data = null;
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ "рдмрд╛рдЗрдХ" рдорд┐рд▓рд╛, рдЬреЛ рдЙрдЪрд┐рдд "рдлрд╛рдЗрд▓ рд╢реЛрдзрди" рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдФрд░ рдмрдбрд╝реЗ рдирдореВрдирд╛ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдЗрд╕рдореЗрдВ, рд╣рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдХрдорд┐рдпреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдпрд╣рд╛рдВ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдкреЙрдкрдХреЙрд░реНрди рд▓реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЙрдк рдЕрдк рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдореЗрдВ Iterator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╡рд┐рдлрд▓ рд╣реЛрдЧрд╛ (рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдирд╣реАрдВред - рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдм рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЧрдВрднреАрд░ рдиреБрдХрд╕рд╛рди:
1. рдорд╢реАрди рдХреЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рд░ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреАрдЫреЗ, рд╣рдореЗрд╢рд╛ рдПрдХ рдХреИрд╢ рдкрд░рдд рд╣реЛрдирд╛ рд╕рд╣реА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рд░ рдЬрдЧрд╣ рдХреА рддрд░рд╣ред
2. рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдореВрд░реНрдд рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХреЗ рд╣рд░ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЙрдбрд▓ рдХреЗ рд╕рдВрдмрдВрдзрдкрд░рдХ рд╕рдВрдмрдВрдзред рдпрджрд┐ рдХреЛрдИ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдпрд╛ рддреЛ рдЗрдЯреНрд░реЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ "рд╕рд┐рд▓рдирд╛" рд╣реЛрдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдореЙрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рдФрд░ рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред
3. рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдкреБрдирд╢реНрдЪ:
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛрдб рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рд╕реЗ рдХрд╛рдлреА рд╕рд╛рд░ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдкреВрд░реНрдгрддрд╛ рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред