рдкрд░рд┐рдЪрдп
рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдкрд░, рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕рд░рд▓ рд░реВрдкрд░реЗрдЦрд╛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдЗрд╕рд╕реЗ MVC рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдЬрдм рдпрд╣ html рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рдкреАрдврд╝реА рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЖрдпрд╛, рддреЛ рдореБрдЭреЗ
рд╕рдордЧреНрд░ рдкреИрдЯрд░реНрди рдпрд╛рдж рдЖрдпрд╛ред рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рд╡рд┐рдХреГрдд рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рд╡рд╣рд╛рдВ рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ред
рдЯреВ рдж рдкреЙрдЗрдВрдЯ
рдХрд┐рд╕реА рднреА рдкреЗрдЬ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА HTML- рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ рдЖрд╡реЗрджрди рддрд░реНрдХ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рднреА рд╕рдордп рдкреГрд╖реНрда рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА HTML-рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВред
рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рд╡рд╕реНрддреБ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЖрджрд┐ред рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдбреНрд░рд╛ () рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЕрдкрдиреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ HTML рдХреЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рд╕рднреА рдЪрд╛рдЗрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд▓реЗрдЦ, рд╕реВрдЪреА, рдкреЛрд╕реНрдЯ, рдлреЛрдЯреЛ рдПрд▓реНрдмрдо, рд╣реЗрдбрд░ рдЕрдВрдд рдореЗрдВ)ред рдмреЗрд╢рдХ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛ () рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
abstract class AbstractView { public $fillings; abstract public function draw(); protected function insert($filling_name){ if(isset($this->fillings[$filling_name])){ $this->fillings[$filling_name]->draw(); } } }
рд╕рдореНрдорд┐рд▓рд┐рдд () рд╡рд┐рдзрд┐ рд╡рд╣ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрд╛рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдбреНрд░рд╛ () рддрд░реАрдХреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рднреА рдмрдЪреНрдЪреЗ рд╡рд╕реНрддреБрдПрдВ $ рднрд░рд╛рдИ рдХреЗ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдЕрдХреНрд╕рд░ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ html-code рди рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╛рда рдпрд╛ рд╕рдВрдЦреНрдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡реНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдбреНрд░рд╛ () рд╡рд┐рдзрд┐, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдкрддреНрддрд┐ рдореЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдмреЗрд╣рдж рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рднрдВрдбрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреВрд╕рд░рд╛ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдмрдирд╛рдПрдВрдЧреЗред
abstract class AbstractView { public $fillings; public $values; abstract public function draw(); protected function insert($filling_name){ if(isset($this->fillings[$filling_name])){ $this->fillings[$filling_name]->draw(); } } protected function write($value_name){ if(isset($this->values[$value_name])){ echo $this->values[$value_name]; } } }
рдЕрдм рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рджреЛ рд╕рд░рд▓ рд╡рд╛рд░рд┐рд╕ рд▓рд┐рдЦреЗрдВрдЧреЗред рдПрдХ рдЯреЛрдкреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдЕрднрд┐рд╡рд╛рджрди рдХрд╛ред
class LayoutView extends AbstractView { public function draw(){ include '/layout.phtml'; } } class IndexView extends AbstractView{ public function draw(){ include '/index.phtml'; } }
Layout.phtml рдФрд░ index.phtml рдлрд╛рдЗрд▓реЗрдВ рдХреНрдпрд╛ рд╣реИрдВ?
layout.phtml:
<!DOCTYPE html> <html> <head> <title><?php $this->write('title')?></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php $this->insert('content'); ?> </body> </html>
index.phtml:
<div>Hello, Habrahabr!</div>
рд╕рдм рдХреБрдЫ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ:
$page = new LayoutView(); $page->values['title'] = "greating"; $page->fillings['content'] = new IndexView(); $page->draw();
рдкрд░рд┐рдгрд╛рдо:
<!DOCTYPE html> <html> <head> <title>greating</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <div>Hello, Habrahabr!</div> </body> </html>
рдлрд┐рд▓рд╣рд╛рд▓, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рдмрджрд▓ рджреВрдВрдЧрд╛ред
рд╡реЛрд▓реНрдЯреЗрдпрд░ рдиреЗ рдХрд╣рд╛:
"рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рдЖрдкрдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЬреАрд╡рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред"рдкреБрдирд╢реНрдЪ: рдХреГрдкрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ VariableView рд╡рд░реНрдЧ рдФрд░
рдЖрд░реНрдЯрдЧреЛрд░ рдбрд╛рдЗрдСрдХреНрд╕рд╛рдЗрдб рдкрд░
sdevalex рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред