рдПрдХ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ,
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП
рд╕рдВрд╣рд┐рддрд╛ рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ
рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ ред рдЕрдВрддрд┐рдо рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж, рдХрдИ рдХреАрдбрд╝реЗ рддрдп рдХрд┐рдП рдЧрдП рдереЗред рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдВрд╣рд┐рддрд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдЖрдЬ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдбреЗрдХреНрд╢рди рдмреАрдбреАрдбреА рд╢реИрд▓реА рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдЕрднреА рднреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╣реИред "рдЕрд╕реНрдерд┐рд░" рдХреЗ рдЕрд░реНрде рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди "рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдХреЗ рдЕрд░реНрде рдореЗрдВред
рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдмреАрдбреАрдбреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛: рдПрдХ рдмрдХрд░реА рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛? рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐, рдХреБрдЫ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрджрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рди PHPUnit рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдП?
рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрдардиреАрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг, рдЬрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдзрд┐ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рддреИрдпрд╛рд░реА, рд╕реНрдЯрдмреНрд╕ рдФрд░ рдореЛрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрднреА-рдХрднреА рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдирдП рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗред
рд╕рдВрд╣рд┐рддрд╛ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
<?php class UserCest { function setNameAndSave(CodeGuy $I) { $I->wantToTest('getter and setter of User model'); $I->execute(function () { $user = new Model\User; $user->setName('davert'); $user->save(); }); $I->seeInDatabase('users',array('name' => 'davert'); } } ?>
рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЛ рдЪреЗрдХ рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдИ рднреА рдХреЛрдб рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рд╕рд╣рд╛рдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░рддрд╛ рд╣реИ:
<?php $I->wantToTest('getter and setter of User model'); $I->execute(function () { $user = new Model\User; $user->setName('davert'); assertEquals('davert', $user->getName()); $user->save(); }); $I->seeInDatabase('users',array('name' => 'davert');
рдкрд░реАрдХреНрд╖рд╛ рдЬрд┐рддрдиреА рдХрдард┐рди рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЙрддрдиреА рд╣реА рдЗрд╕рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЬрдм рдЖрдк рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреЛрдб рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрднреА-рдХрднреА рдПрдХ рдЧреЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЖрдЗрдП рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ MVC рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдРрд╕реЗ рд╕рд░рд▓ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд▓реЗрдВред
<?php class UserController extends AbtractController { public function show($id) { $user = $this->db->find('users',$id); if (!$user) return $this->render404('User not found'); $this->render('show.html.php', array('user' => $user)); return true; } } ?>
рд╡рд╣ рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╡реНрдпреВ рдФрд░ рдореЙрдбрд▓ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдЗрд╕реЗ рдХреВрдЯ-рдХреВрдЯ рдореЗрдВ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
<?php class UserControllerCest { public $class = 'UserController'; public function show(CodeGuy $I) { $I->haveStub($controller = Stub::makeEmptyExcept($this->class, 'show')) ->haveStub($db = Stub::make('DbConnector', array( 'find' => function($id) { return $id ? new User() : null ))) ->setProperty($controller, 'db', $db); $I->wantTo('render profile page for valid user') ->executeTestedMethodOn($controller, 1) ->seeResultEquals(true) ->seeMethodInvoked($controller, 'render'); $I->expect('it will render page 404 for unexistent user') ->executeTestedMethodOn($controller, 0) ->seeResultNotEquals(true) ->seeMethodInvoked($controller, 'render404','User not found') ->seeMethodNotInvoked($controller, 'render'); } }
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рдореИрдВрдиреЗ
рдпрд╣рд╛рдВ PHPUnit рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣ 1.5 рдЧреБрдирд╛ рд▓рдВрдмрд╛ рдирд┐рдХрд▓рд╛, рдФрд░ рдХреЛрдб, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ PHPUnit рдЧреБрд░реБ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ: рдЗрд╕рдХреА рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ 1 рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ 'рд╢реЛ' рдкрджреНрдзрддрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ
рдмрд╛рдж рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ 'рд░реЗрдВрдбрд░' рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╕реНрдЯрдмреНрд╕ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрднрд┐рдХрдерди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдЪреЗрдХ рдЬрд╛рддреЗ рд╣реИрдВред
рдкрдардиреАрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдХреЛ рд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд╛рда рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдореИрдВ рд╡реИрдз рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкреЗрдЬ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рддрд░реАрдХреЗ рдХреЛ рдЕрдВрдЬрд╛рдо рджреВрдВ
рдореИрдВ рдкрд░рд┐рдгрд╛рдо рдмрд░рд╛рдмрд░ рджреЗрдЦреВрдВрдЧрд╛: рд╕рддреНрдп
рдореИрдВ рджреЗрдЦреВрдБрдЧрд╛ рд╡рд┐рдзрд┐: $ рдирд┐рдпрдВрддреНрд░рдХ, 'рд░реЗрдВрдбрд░'
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдирдЬрд╛рдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда 404 рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛
рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рддрд░реАрдХреЗ рдХреЛ рдЕрдВрдЬрд╛рдо рджреВрдВ
рдореИрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рджреЗрдЦреВрдВрдЧрд╛: рд╕рддреНрдп
рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рд╡рд┐рдзрд┐: $ рдирд┐рдпрдВрддреНрд░рдХ, 'рд░реЗрдВрдбрд░404'
рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд▓рд╛рдЧреВ: $ рдирд┐рдпрдВрддреНрд░рдХ, 'рд░реЗрдВрдбрд░'
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд▓реЗ рд▓реЛ рдФрд░ рд▓рд┐рдЦреЗрдВред рд╢рд╛рдпрдж рдкреНрд░рд▓реЗрдЦрди рдкреАрдврд╝реА рдЬрд▓реНрдж рд╣реА рдЬреЛрдбрд╝ рджреА рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреИрд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдЯрдмреНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реНрдЯрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
<?php
рдпрд╣ PHPUnit рдХреА рдкреЗрд╢рдХрд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд░рд▓ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрдо рд╕реЗ рдХрдо рдХрд┐рддрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдХрдмреНрдпреВрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╡реЗ рд╕рднреА рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╕реНрдЯрдм рд╡рд░реНрдЧ рдореЙрдХрдмреНрдпреБрд▓рд░ рдкрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдЯрдмреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдмреБрдзрд╡рд╛рд░ред рдФрд░ рдЙрдирд╕реЗ, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ, рд╕рдорд╛рди рд╕реАрдореИрдереЛрдбрдЗрдирд╡реЙрдХреНрдб рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛, рд╣рдо рд╕реНрдЯрдм рдХреЛ рдореЙрдХ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдФрд░
рдпреВрдирд┐рдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рд╛, рдпрд╣ рдмрд╛рдд рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ "рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдЧреЛрд▓рд╛рдХрд╛рд░ рдХреЛрдб" рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдмрд▓реНрдХрд┐ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрджрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдкреВрдЫреЗрдВред
рдкреБрдирд╢реНрдЪ рдХреЛрдбрд┐рдВрдЧ рдФрд░ Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ
рд▓реЗрдЦ рд╕рд╛рдЗрдЯ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛