рдореИрдВ PHP рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рдореБрджрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдореБрджрд╛рдп рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХреГрддрд┐ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред рд▓реЗрдХрд┐рди рдХреБрдЫ рдкрд╣рд▓реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ
рд▓рд┐рдП рджреАрд╡рд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЦреБрдж рдХреЛ
рдорд╛рд░рдирд╛ рдЪрд╛рд╣рддрд╛
рд╣реВрдВ , рдЗрд╕рд▓рд┐рдП рднрдЧрд╡рд╛рди рдиреЗ рдордирд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрд┐ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдПрдХрджрдо рд╕рд╣реА рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред
рдЖрдЬ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рдЦреБрдж рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рдерд╛
рдПрдХ рдмрджрд╕реВрд░рдд рдмрддреНрддрдЦ рдХрд╛ рдмрдЪреНрдЪрд╛ рд╕реЗ рд╣рдВрд╕ рддрдХ, рдпрд╛ рдПрдХ рдШреБрдорд╛рд╡рджрд╛рд░ рд╣рд╛рде рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдЦрдХ рдиреЗ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдХреЛрдб рдХреЛ рдХрдВрдШреА рдХрд░рдирд╛ рдХрд╛рд░реНрдп рд╣реИ
<h1></h1> <? $DB = new DBConnector; $DB->query('SELECT * FROM users LIMIT 10'); if($DB->get_num_rows()){ while($user = $DB->fetch_row()){ echo '<p>'.$user['name'].'</p>'; } } ?>
рдЬрд╣рд╛рдВ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╢реБрд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП - рдХреЛрдб рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рд╣рдо рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ рд╣рдо рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ (рдХреЛрдИ рдбреЗрдЯрд╛рдмреЗрд╕, рдЖрджрд┐) рдХреЛ рдирд╣реАрдВ рд╕рдВрднрд╛рд▓реЗрдЧрд╛ рдФрд░ рд╣рдо рдпрд╣ рдорд╛рдиреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдб рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЪрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: Username1, Username2, ...
рд╣рдо PHPUnit рдЬреИрд╕реЗ рдЪреМрдЦрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реАрдзреЗ PHP рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред
<?php $expected = <<<'EOT' <h1></h1> <p>Username1</p><p>Username2</p><p>Username3</p><p>Username4</p> EOT; ob_start(); include 'index.php'; $actual = ob_get_clean(); echo $actual === $expected ? 'OK' : 'Failed', PHP_EOL;
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ... рдФрд░ рд╣рдореЗрдВ DBConnector рд╡рд░реНрдЧ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг "рд╕рдВрдХрд▓рди" рдХреА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯрдм рд▓рд┐рдЦрддреЗ рд╣реИрдВ ("рд▓рдбрд╝рд╛рдИ" рдореЗрдВ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЯреЗрд╕реНрдЯ рдЯреЗрдмрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЖрджрд┐, рд▓реЗрдХрд┐рди рдкреЛрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ)ред рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдореВрд▓ DBConnector рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рдо рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ :)
<?php class DBConnector { private $users; public function query($query) { for ($i=1; $i<=4; $i++) { $this->users[] = array('name' => 'Username' . $i); } } public function get_num_rows() { return count($this->users); } public function fetch_row() { $each = each($this->users); return $each['value']; } }
рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ - рд╣рдореЗрдВ рдареАрдХ рд╣реИред рд╣рдордиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛, рдЕрдм рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рдЧрд▓рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рддреБрд░рдВрдд рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдЗрд╕ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдПрдХ рдЕрдкрд╡рд╛рдж рдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд╣реЗрдВрдЧреЗред рддреБрд░рдВрдд рдПрдХ рддрдХ рд╕реАрдорд┐рддред
рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ, рд╡рд╣ рд╣реИ рд╣реЗрдбрд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА, рдЖрдЙрдЯрдкреБрдЯред рд╣рд▓, рд░рд┐рдХреЙрд░реНрдб рдФрд░ HTML рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред
<?php include 'DBConnector.php'; $DB = new DBConnector; $DB->query('SELECT * FROM users LIMIT 10'); if($DB->get_num_rows()){ while($user = $DB->fetch_row()){ $users[] = $user; } } else { $users = array(); } ?> <h1></h1> <? foreach ($users as $user) { echo '<p>'.$user['name'].'</p>'; } ?>
рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдареАрдХ рд╣реИ, рд╣рдордиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рд╛ред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо HTML рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред
<?php
<h1></h1> <?
рдЬрд╛рдВрдЪ - рдареАрдХ рд╣реИред рдХреБрдЫ рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ рд╡рд╣реА рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдм рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рдпрд╛ рджреГрд╢реНрдп рдХрд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдУред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдирд╣реАрдВ, рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ (рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП ...) рдмрдирд╛рддреЗ рд╣реИрдВред
<h1></h1> <?php foreach ($users as $user): ?> <p><?=$user['name']?></p> <?php endforeach; ?>
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ - рд╡рд┐рдлрд▓! рд╣рдордиреЗ рджреГрд╢реНрдп рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ HTML рдореЗрдВ, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдХрднреА рдРрд╕рд╛ рди рдХрд░реЗрдВ! :))ред рдЕрдм рд╕рдм рдареАрдХ рд╣реИред рд╣рдо рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдбрд╝рддрд╛рд▓реА рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИред рдФрд░ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдРрд╕реЗ рдЪрдпрди рдЕрдХреНрд╕рд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡реИрд╕реЗ рднреА, рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрди рд╕рднреА $ рдбреАрдмреА рдЖрдкрдХреА рдЖрдВрдЦреЛрдВ рдореЗрдВ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдФрд░ рдЖрдкрдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рд╣рдо DRY рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдХреА рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдкрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗред рдХрдХреНрд╖рд╛ рдХреЛ рдирд╛рдо рджреЗрдВ, рдХрд╣реЗрдВ, UserRepositoryред
<?php class UserRepository { private $db_connector; public function __construct(DBConnector $db_connector) { $this->db_connector = $db_connector; } public function getAll($limit=10) { $this->db_connector->query("SELECT * FROM users LIMIT {$limit}"); if($this->db_connector->get_num_rows()){ while($user = $this->db_connector->fetch_row()){ $users[] = $user; } } else { $users = array(); } return $users; } }
рдХреЛрдб рдХреЛ рд▓рдЧрднрдЧ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдХреЗрд╡рд▓ рд╕реАрдорд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ :(, рдпрд╣ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрд╕рдВрднрд╡ рдерд╛ред рд▓реЗрдХрд┐рди рдкрд░рд┐рд╡рд░реНрддрди рд╕рд░рд▓ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЯреВрдЯреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
<?php require_once 'DBConnector.php'; require_once 'UserRepository.php'; $user_repository = new UserRepository(new DBConnector); $users = $user_repository->getAll(); include 'index.php.html';
рдЯреЗрд╕реНрдЯ? рдареАрдХ рд╣реИ! (рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╣рд░ рдЪрд░рдг рдкрд░, рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ "рдЬрд╣рд╛рдБ рдЖрдк рдЦрд░рд╛рдм рд╣реЛ рдЧрдП рдереЗ" рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд▓рдХреНрд╖реНрдпрд╣реАрди рд╡рд░реНрд╖реЛрдВ рддрдХ рд╢рд░реНрдорд┐рдВрджрд╛ рди рд╣реЛрдВ)ред рдпрджрд┐ рд╣рдо "рд╕реЗрд╡рд╛" requ_once рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдлрд╝рд╛рдЗрд▓ рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрдо рд╣реЛ рдЧрдИ рдереА: рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдВ, рдЗрд╕рдореЗрдВ рд╕реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рд╣реЗрдЬрд╣реЛрдЧ, рдпрд╣ рдкрд╣рд▓реА рдирдЬрд░ рдореЗрдВ рд╢рд╛рдпрдж рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдкрддрд▓рд╛ рдХрд╣рддреЗ рд╣реИрдВред рдЦреИрд░ рдпрд╣ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╣реИред
рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░ рдкрд░ рдПрдХ рдФрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдХрд┐рд╕реА рдХреА рдЕрд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд╣реИ - рдХреНрдпрд╛ рдЙрдиреНрд╣реЛрдВрдиреЗ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА"
рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рд╣реИ ,
рдЬрд┐рдирдХреА рд╡рд╕реНрддреБрдПрдВ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ (рдЙрд░реНрдл рд╣реИрд╢) рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддреА рд╣реИрдВ? рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдореВрд▓ рдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдХрдо рд╕реЗ рдХрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╕рд░рдгреА рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рджреЗрдВред
while($user = $this->db_connector->fetch_row()){ $users[] = new User($user); }
рдареАрдХ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рд╣реА, рдЬрд┐рд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ рдбреЛрдореЗрди рдореЙрдбрд▓ рд╡рд░реНрдЧ рдпрд╛ рдмрд╕ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдХрд╣рддреЗ рд╣реИрдВред
<?php class User { private $name; public function __construct(array $properties) { $this->name = $properties['name']; } public function getName() { return $this->name; } }
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдмрджрд▓реЗрдВ
<h1></h1> <?php foreach ($users as $user): ?> <p><?= $user->getName() ?></p> <?php endforeach; ?>
рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдЬреЛрдбрд╝реЗрдВред
<?php require_once 'DBConnector.php'; require_once 'User.php'; require_once 'UserRepository.php'; $user_repository = new UserRepository(new DBConnector); $users = $user_repository->getAll(); include 'index.php.html';
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ - рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ! рд╢рд╛рдпрдж рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рд░реБрдХ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓рдЧрднрдЧ рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рд╣рдордиреЗ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ред рдХрд╣рд╛рдБ? рдкрд░реАрдХреНрд╖рдг рдореЗрдВ! рдкрд░реАрдХреНрд╖рдг рдореБрдЦреНрдп рдХреЛрдб рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рднреА рд╣реИред
- рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рджреГрд╢реНрдп рд╣реИ рд╡рд╣ рд╣рд░ рдЪреАрдЬ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╡рд╣ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдирд╛рдо рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП getName () рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдкрд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ (рд╣реЗрд╣) рдХрд╛рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рдЦреБрдж рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдП) рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдмреА) рдирдХрд▓реА рд╡рд┐рдХрд▓реНрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд╕реНрдЯрдмреНрд╕) рдФрд░ mokeys) рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реА) рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдлрд╝рд╛рдЗрд▓реЗрдВ, NoSQL DBMSs, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлрд╝рд╛рдЗрд▓-рдЖрдзрд╛рд░рд┐рдд рдХреНрд▓рд╛рдЙрдб рдлрд╝рд╛рдЗрд▓ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛рдПрдБред
- рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ, рдпреЗ рддрдерд╛рдХрдерд┐рдд POPO рд╣реИрдВ - рдкреНрд▓реЗрди рдУрд▓реНрдб PHP рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдлреНрд▓реИрдЯ рдкреБрд░рд╛рдиреА PHP рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕)ред рдЕрдм рддрдХ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдирдореЗрдВ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдмрд╛рдХреА рд╕рдм рдЪреАрдЬреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рдо рд▓рдЧрднрдЧ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдореЗрдВ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди / рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛ред
рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ
рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЖрдЧреЗ рд╕рд╛рд░, рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ рднреАред
- рджреЗрдЦрдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ (рд╣рдорд╛рд░реЗ рд╢рд╛рдорд┐рд▓) рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ - рдЖрдк рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХреБрдЫ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╕реНрдорд╛рд░реНрдЯреА, рдЯреНрд╡рд┐рдЧ, рдЖрджрд┐ред
- рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдХреНрд▓рд╛рд╕ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рдмрдирд╛рдПрдВ
- рдлреНрд░рдВрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреНрдп рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХреЛрдВ (ORM, рд░рд╛рдЙрдЯрд░, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдЖрджрд┐) рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ
- рдХреЛрдб рдХреЛ рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Symfony2 :)
- рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╡рд░, рдореЙрдбреНрдпреВрд▓рд░ (рдпреВрдирд┐рдЯ) рд╕реЗ рд╕реНрд╡реАрдХреГрддрд┐ рддрдХред
рдпрджрд┐ рд░реБрдЪрд┐ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЫреЛрдЯреЗ рдЪрдХреНрд░ рдореЗрдВ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдпрд╣ рдХреБрдЫ рдпрд╛ рдХрдо рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛрд╡рдиреЛрдХреЙрдб рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ рдЕрд╕рднреНрдп рдФрд░ рд╢рд░реНрдореАрд▓реА :) рдЕрдЧрд░ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рддреЛ
github.com/Vololh/refactor-sample github рдкрд░ рд░реИрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛