PHP рдореЗрдВ OOP рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ред рд░рдЬрд┐рд╕реНрдЯреНрд░реА, рдлреИрдХреНрдЯреНрд░реА рдореЗрдердб, рд╕рд░реНрд╡рд┐рд╕ рд▓реЛрдХреЗрдЯрд░, рдФрд░ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдирд╛

рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реБрдЖ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдлрд▓ рд╕рдорд╛рдзрд╛рди рддрдп рдХрд░рддреЗ рд╣реИрдВред рдкреИрдЯрд░реНрди рдкрд░ рдмрд╣реБрдд рд╕рд╛рд╣рд┐рддреНрдп рд╣реИред рдПрд░рдЪ рдЧрд╛рдорд╛, рд░рд┐рдЪрд░реНрдб рд╣реЗрд▓реНрдо, рд░рд╛рд▓реНрдл рдЬреЙрдирд╕рди рдФрд░ рдЬреЙрди рд╡рд▓рд┐рд╕рд╛рдЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЪрд╛рд░ рдЧреИрдВрдЧреНрд╕ "рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди" рдХреА рдкреБрд╕реНрддрдХ рдФрд░, рд╢рд╛рдпрдж, рдорд╛рд░реНрдЯрд┐рди рдлреЙрд╡рд▓рд░ рджреНрд╡рд╛рд░рд╛ "рдкреИрдЯрд░реНрди рдСрдлрд╝ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдПрдкреНрд▓реАрдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░" рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкреАрдПрдЪрдкреА рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдкрдврд╝рд╛ рд╣реИ, рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред - рдпрд╣ рдореИрдЯ рдЬреИрдВрдбрд╕реНрдЯреНрд░рд╛ рджреНрд╡рд╛рд░рд╛ "PHP рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдкреИрдЯрд░реНрди рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕" рд╣реИ ред рдРрд╕рд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рд╕рд╛рд╣рд┐рддреНрдп рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА-рдЕрднреА OOP рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкреИрдЯрд░реНрди рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рд╕рд░рд▓реАрдХреГрдд: рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рд▓реЗрдЦ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИред рдореЗрдВ tion KISS рд╢реИрд▓реАред
рдЖрдЬ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдУрдУрдкреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг


рдПрдХ рдЖрдзреБрдирд┐рдХ рдУрдУрдкреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджрд░реНрдЬрдиреЛрдВ, рд╕реИрдХрдбрд╝реЛрдВ рдФрд░ рдХрднреА-рдХрднреА рд╣рдЬрд╛рд░реЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, рдЖрдЗрдП рдЗрд╕ рдмрд╛рдд рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХрд┐ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдПрдХрдорд╛рддреНрд░ рдкрд╣рд▓реВ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд░реБрдЪрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рднреА "рдЕрддрд┐рд░рд┐рдХреНрдд" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рд╕реБрдкрд░-рдбреБрдкрд░ рдЙрдкрдпреЛрдЧреА рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреВрдЖрд░рдЖрдИ рдХреЛ рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдПрдЪрдЯреАрдПрдордПрд▓ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддрд╛рдХрд┐ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рди рд▓рдЧреЗ, рдкрд░рд┐рдгрд╛рдо рдХреЛ рднреА рдЬрд╛рдВрдЪрдиреЗ рджреЗрдВ рдФрд░ "рдЧрд▓рдд" рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдВред

class Grabber { public function get($url) {/** returns HTML code or throws an exception */} } 


рдПрдХ рдФрд░ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдХреА рд╡рд╕реНрддреБрдПрдВ рдкрд░рд┐рдгрд╛рдореА HTML рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдВрдЧреАред рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд┐ HTML рдХреЛрдб рдФрд░ CSS рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рджрд┐рдП рдЧрдП рдЪрдпрдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рджреЗрддреА рд╣реИред

 class HtmlExtractor { public function filter($html, $selector) {/** returns array of filtered elements */} } 


рдЕрдм, рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рджрд┐рдП рдЧрдП рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП Google рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрдиреНрдп рд╡рд░реНрдЧ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░реИрдмрд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HtmlExtractor рд╡рд░реНрдЧред рдЗрд╕рдореЗрдВ рдпреВрдЖрд░рдЖрдИ рдирд┐рд░реНрдорд╛рдг рддрд░реНрдХ рднреА рд╣реЛрдЧрд╛, рдкреНрд░рд╛рдкреНрдд HTML рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ред

 class GoogleFinder { private $grabber; private $filter; public function __construct() { $this->grabber = new Grabber(); $this->filter = new HtmlExtractor(); } public function find($searchString) { /** returns array of founded results */} } 


рдХреНрдпрд╛ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ Grabber рдФрд░ HtmlExtractor рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди GoogleFinder рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╣реИ? рдЖрдЗрдП рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдирд┐рд░реНрдгрдп рдХрд┐рддрдирд╛ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИред рдкрд╣рд▓рд╛, рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░реИрдмрд░ рдХреНрд▓рд╛рд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдореЗрдВ, рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рдиреА рддрдХрдиреАрдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рджреВрд░ рд╣реИред
рджреВрд╕рд░реА рдмрд╛рдд, рдЕрдЧрд░ рд╣рдо рдЧреНрд░реИрдмрд░ рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯрд░ рдХреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЗ рд╕рд╛рде GoogleFinder рддрд░реНрдХ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдкреИрджрд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо GoogleFinder рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рднреА, рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╣рдбрд╝рдкрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдлрд┐рд▓реНрдЯрд░ рдЧреБрдгреЛрдВ рдХрд╛ рджрд╛рдпрд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИред
рдФрд░ рдЕрдВрддрд┐рдо рдХреНрд╖рдг, рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ GoogleFinder рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рдирдИ рдЬреЛрдбрд╝реА рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо Grabber рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ GoogleFinder рдкреНрд░рдХрд╛рд░ рдХреА рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ HtmlExtractor рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рдЧрдП рдереЗ рдХрд┐ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рдХреЛ рдХрдХреНрд╖рд╛ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ GoogleFinder рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

 class GoogleFinder { private $grabber; private $filter; public function __construct(Grabber $grabber, HtmlExtractor $filter) { $this->grabber = $grabber; $this->filter = $filter; } public function find($searchString) { /** returns array of founded results */} } 


рдЕрдЧрд░ рд╣рдо Grabber рдФрд░ HtmlExtractor рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рди рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрд╡рд╢реНрдпрдХ рднреА рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирдП рдмрдирд╛рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдерд┐рддрд┐ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕рд░рд▓ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рд╡рд░реНрдЧ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ GoogleFinder рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 class Controller { public function action() { /* Some stuff */ $finder = new GoogleFinder(new Grabber(), new HtmlExtractor()); $results = $finder->find('search string'); /* Do something with results */ } } 


рдЙрдк-рдпреЛрдЧ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред рд╣рдордиреЗ рдмрд╣реБрдд рдХрдо рдХреЛрдб рд▓рд┐рдЦреЗ, рдФрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╣рдордиреЗ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди ... рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ GoogleFinder рдЬреИрд╕реА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдирдХрд▓ рдХрд░рдиреА рд╣реЛрдЧреАред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЗрддрдиреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ 10 рд▓рд╛рдЗрдиреЛрдВ рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рддрдХ рдХрд╛ рд╕рдордп рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред рдпрджрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рддрд░реНрдХ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ :)
рдЖрдорддреМрд░ рдкрд░, рд╣рд╛рд░реНрдбрдХреЛрдб рд╕рд░рд▓ рд╣реЛрддрд╛ рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рди рдЖрдорддреМрд░ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯред


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВред

 $registry = new ArrayObject(); $registry['grabber'] = new Grabber(); $registry['filter'] = new HtmlExtractor(); $registry['google_finder'] = new GoogleFinder($registry['grabber'], $registry['filter']); 

рд╣рдо рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ ArrayObject рдХреЛ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред

 class Controller { private $registry; public function __construct(ArrayObject $registry) { $this->registry = $registry; } public function action() { /* Some stuff */ $results = $this->registry['google_finder']->find('search string'); /* Do something with results */ } } 


рдЖрдк рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдирд╣реЗрд░рд┐рдЯ ArrayObject, рдПрдХ рдирдИ рдХрдХреНрд╖рд╛ рдХреЗ рдЕрдВрджрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ, рдЖрд░рдВрдн рдХреЗ рдмрд╛рдж рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЖрджрд┐ред рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╣ рд╕рдордЭрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдкреИрдЯрд░реНрди рдЬрдирд░реЗрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рд╣рдореЗрдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕рд┐рд░реНрдл рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЛ рджреЗрдЦреЗрдВред
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдирд╛ рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рд╣рдордиреЗ рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПред рд╣рдо рдПрдХ рд╣реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдирдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реНрдХ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдЖрд╡реЗрджрди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЬрдЧрд╣ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИред рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЕрдм рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд╣рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред
рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рддрджрдиреБрд╕рд╛рд░, "рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдПрдВ" рдмрдирд╛рдиреЗ рдХреА рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЬреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рдВ, рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдХреЗрд╡рд▓ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрдХ рддрд░реАрдХрд╛ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп, рд╣рдореЗрдВ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддрджрдиреБрд╕рд╛рд░, рд╕рдордп рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рджреВрд╕рд░реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рд╣рд╛рдВ, рд╣рдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЖрдкрдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрджрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рднреА рдХрдард┐рди рд╕рдВрдмрдВрдз рд╣реИрдВ (рдпрд╣рд╛рдБ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИ )ред
рддреАрд╕рд░рд╛, рдирд┐рдпрдВрддреНрд░рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╣рдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рддрдм рддрдХ рдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рд╣рдо рдЙрд╕рдХреЗ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд▓реЗрддреЗред

рдлреИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐


рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ, рд╣рдо рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрд╕рд╣рдЬ рд╣реИрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╣рд▓реЗ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рд╕реБрд▓рдн рд╣реЛ рдЬрд╛рдПред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рджреВрд╕рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреА рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдкреВрдЫрд╛" рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рдлреИрдХреНрдЯреНрд░реА рдореЗрдердб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

 class Factory { public function getGoogleFinder() { return new GoogleFinder($this->getGrabber(), $this->getHtmlExtractor()); } private function getGrabber() { return new Grabber(); } private function getHtmlExtractor() { return new HtmlFiletr(); } } 


рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 class Factory { private $finder; public function getGoogleFinder() { if (null === $this->finder) { $this->finder = new GoogleFinder($this->getGrabber(), $this->getHtmlExtractor()); } return $this->finder; } } 


рд╣рдо рдлреИрдХреНрдЯреНрд░реА рд╡рд┐рдзрд┐ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреНрдп рдлреИрдХреНрдЯреНрд░рд┐рдпреЛрдВ рдХреЛ рдЖрд░рдВрднреАрдХрд░рдг рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдлреИрдХреНрдЯреНрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рддреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░рдЦрд╛рдиреЗ рдкреНрд░рджрд╛рди рдХрд░реЗред рд╣рдо рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред

 class Controller { private $factory; public function __construct(Factory $factory) { $this->factory = $factory; } public function action() { /* Some stuff */ $results = $this->factory->getGoogleFinder()->find('search string'); /* Do something with results */ } } 


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдПрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреА рдЖрдИрдбреАрдИ рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рдПрдЧреА рдЬрд╣рд╛рдВ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИред рд╣рдордиреЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рднреА рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рддрднреА рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рд░рдЦрд╛рдиреЗ рд╕реЗ "рдкреВрдЫреЗрдВрдЧреЗ"ред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЕрднреА рддрдХ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреИрд╕реЗ рдХреА рдЬрд╛рдПред рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЖрдк рд╕реНрдЯреИрдЯрд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рд╢реВрдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдордиреЗ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдЦреЛ рджрд┐рдпрд╛ - рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрдорд╛рдгред рдФрд░ рдЬрдмрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рднреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ "рдирд┐рд╣рд┐рдд" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░


рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдкрдХреЛ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рдЦрдВрдбрди рдХреА рдХрдореА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдореВрд░реНрддрддрд╛ рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧреАред рдЗрд╕ рдкрд░рдд рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рд╢рд░реНрддреЗрдВ:
рдХреЛрдИ рднреА рдореЙрдбреНрдпреВрд▓ рдЗрд╕рдХреЗ рд╕реЗрд╡рд╛ рд╡рд┐рд╡рд░рдг рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрдВрдЯреЗрдирд░ рд╕реЗ рдХреБрдЫ рд╕реЗрд╡рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд╕рд░рд▓рддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдо ArrayObject рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 class ServiceContainer extends ArrayObject { public function get($key) { if (is_callable($this[$key])) { return call_user_func($this[$key]); } throw new \RuntimeException("Can not find service definition under the key [ $key ]"); } } 


рдлрд┐рд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдкрдВрдЬреАрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 $container = new ServiceContainer(); $container['grabber'] = function () { return new Grabber(); }; $container['html_filter'] = function () { return new HtmlExtractor(); }; $container['google_finder'] = function() use ($container) { return new GoogleFinder($container->get('grabber'), $container->get('html_filter')); }; 


рдФрд░ рдЗрд╕ рддрд░рд╣ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 class Controller { private $container; public function __construct(ServiceContainer $container) { $this->container = $container; } public function action() { /* Some stuff */ $results = $this->container->get('google_finder')->find('search string'); /* Do something with results */ } } 


рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рдореНрдлрдиреА рд╕рд░реНрд╡рд┐рд╕ рдХрдВрдЯреЗрдирд░ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдкреИрд░рд╛рдореАрдЯрд░, рдкреИрд░рд╛рдореАрдЯрд░, рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рджрд╛рдпрд░реЗ, рдЯреИрдЧ, рдПрд▓рд┐рдпрд╛рд╕, рдирд┐рдЬреА рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЦреЛрдЬ, рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред (рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╛рд╕) рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред DIExtraBundle рдЖрдЧреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рди рдХреЗрд╡рд▓ рдЙрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкрд┐рдЫрд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдврд╛рдВрдЪреЗ рдХреЗ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдЕрд░реНрдерд╛рддреН, ServiceContainer :: рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ, рд╣рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╕реНрддреБ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рджрд╛рдпрд░рд╛ рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдХреА рдХрд▓реНрдкрдирд╛ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИред рдпрд╣рд╛рдВ рдЖрдк AOP рдкреНрд░рддрд┐рдорд╛рди, рдФрд░ LazyLading рдЖрджрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрднреА рднреА рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдХреЛ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдорд╛рдирддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рддрдерд╛рдХрдерд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрдВрдЯреЗрдирд░ рдЕрд╡реЗрдпрд░ рдХреНрд▓рд╛рд╕реЗрд╕ (рдпрд╛рдиреА рд╡реЗ рд╡рд░реНрдЧ рдЬрд┐рдирдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд╣рдо рдХреЛрдИ рднреА рд╕реЗрд╡рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЦрд░рд╛рдм рд╣реИред
рдкрд╣рд▓реЗ, рдлрд┐рд░ рд╕реЗ, рдкрд░реАрдХреНрд╖рдгред рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЛрдХ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдкреВрд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдореЛрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЕрд╕рд▓реА рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рджреВрд╕рд░рд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЦрдВрдбрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд╣рд╛рдпрдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реЗрд╡рд╛ (рдпрд╛ ServiceDefinition) рдХреЛ рдмрджрд▓рдХрд░, рд╣рдо рд╕рднреА рдирд┐рд░реНрднрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдордЬрдмреВрд░ рд╣реЛрдВрдЧреЗред рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ IDE рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдкреВрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдРрд╕реЗ рд╕реНрдерд╛рди рдвреВрдВрдврдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЖрд╢реНрд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд╣рд╛рдВ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд░рд┐рдлреИрдХреНрдЯ рдХреА рдЧрдИ рд╕реЗрд╡рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред
рдЦреИрд░, рддреАрд╕рд░рд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЭрдЯрдХреЗ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝реА рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рднреНрд░рдо рдкреИрджрд╛ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕реЗрд╡рд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рд╡рд░реНрдЧ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЕрдкрдиреЗ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝рдХрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди


рдЖрд╡реЗрджрди рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рд╕рд╣рд┐рдд рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХреЛ рдХрдВрдЯреЗрдирд░ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдХрд╣рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 $container['google_finder'] = function() use ($container) { return new Controller(Grabber $grabber); }; 


рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ:

 class Controller { private $finder; public function __construct(GoogleFinder $finder) { $this->finder = $finder; } public function action() { /* Some stuff */ $results = $this->finder->find('search string'); /* Do something with results */ } } 


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг (рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ) рдХреЛ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рджреЛрдиреЛрдВ рд╣реИрдВред рдЬрдм рддрдХ рд╣рдо рдПрдХрдорд╛рддреНрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдХреЛрдб рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЧреНрд░рд╛рд╣рдХ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдХреЛрдб рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛ред рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмрджрд▓рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо TDD рдпрд╛ BDD рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ (рдирд┐рдпрдВрддреНрд░рдХ рдХрдХреНрд╖рд╛рдУрдВ рд╕рд╣рд┐рдд) рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕рд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдж рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╕рдм рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдФрд░ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдЧрд╛ред
рд▓реЗрдХрд┐рди, рд╕рд┐рдХреНрдХреЗ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рд╕рд╛рдЗрдб рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рдХрдИ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рд╡рд┐рд▓рдВрдмрд┐рдд рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдПрдХ рд╣рд▓реНрдХреЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреБрдЫ рд╣рдж рддрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдкреИрджрд╛ рдХрд░рдирд╛ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░реАрдХреНрд╖рдг рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдСрдкрд░реЗрд╢рди рд╣реИред рд╕рдм рдХреБрдЫ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╕реНрд╡рдпрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред
рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ, рдЖрдкрдХреЛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрддреНрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреИрд╕реЗ рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рдХреЛрдИ рдПрдХ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рддрдм рддрдХ рдЕрдЪреНрдЫреЗ рд╣реИрдВ рдЬрдм рддрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рд╕рд░рд▓ рд░рд╣рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЙрдирдЯрд┐рдирд░ рдЕрд╡реЗрдпрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рд╖реНрдХрд░реНрд╖


рдареАрдХ рд╣реИ, рдЕрдм рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдХреЛ рдЦрдЯрдХрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдФрд░ рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ ... :)
рдЗрд╕рд▓рд┐рдП, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рдо рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреИрдЯрд░реНрди рднреА рд╣реИ, рд╣рдордиреЗ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╣рдордиреЗ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдФрд░ рдХрдИ рдЕрдиреНрдп рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдпрд╣ рд▓реЗрдЦ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП
рдореИрдВ рдЧреЛрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ :) рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдФрд░ рдЕрдиреНрдп рдкреИрдЯрд░реНрди рдЗрддрдиреЗ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рддрдирд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╡рд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди, рдХреА KISS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рджрд╛рдирд╛ , рдЬреЛ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рд╕реМ рдХреА рдЬреЛрдбрд╝реА рд▓рд╛рдЗрдиреЛрдВ рд▓реЗрддрд╛ рд╣реИред рдФрд░ рд╕рд┐рдореНрдлрдиреА рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдШрдЯрдХ рдЬреИрд╕реЗ рд░рд╛рдХреНрд╖рд╕ рд╣реИрдВ ред рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕реЗрдЯ рддреБрд▓рдиреАрдп рдирд╣реАрдВ рд╣реИред
рдЦреИрд░, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдФрд░ рдЖрдкрдиреЗ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдордЬрд╛ рдЖ рдЧрдпрд╛!

PS рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рд╕рднреА рдиреЗ рдЬреЛ рд╕рдордп рд▓рд┐рдпрд╛ рдФрд░ рдорджрдж рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ред рдЖрдкрдХреА рд░рд╛рдп рдЬрд╛рдирдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛;)

Source: https://habr.com/ru/post/In183658/


All Articles