
рд╕рд┐рдореНрдлрдиреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЕрдЧреНрд░рдгреА рдбреЗрд╡рд▓рдкрд░, рдлреИрдмрд┐рдпрди рдкреЛрдЯреЗрдиреНрд╢рд┐рдПрд░ рдиреЗ 2009 рдореЗрдВ Zend / PHP рд╕рдореНрдореЗрд▓рди рдореЗрдВ рд╕рд┐рдореНрдлрдиреА 1.3 / 1.4 рдФрд░ рдЬрд╝реЗрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рднреЛрдВ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХреАред рдЙрдирдХреЗ рднрд╛рд╖рдг рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдЙрдирдХреА рдирд┐рдЬреА рд╡реЗрдмрд╕рд╛рдЗрдЯ [1] рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд
рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, Symfony2 PHP рднрд╛рд╖рд╛ рдХреА рдирд╡реАрдирддрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд▓рдЧрднрдЧ рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд╡рд┐рдХрд╛рд╕ рдЖрд░рд╕реА рдЪрдХреНрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╣рд▓реА рд╕рд┐рдореНрдлрдиреА рд╢рд╛рдЦрд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде (рдФрд░ рди рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ) рдирдП рдкреНрд░рдореБрдЦ рдХреА рдУрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдорд╛рдирдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдШрдЯрдХреЛрдВ рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, Symfony2 рдПрдХ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рднреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, Zend рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (Gdata, Search_Lucene, Pdf, рдЖрджрд┐) рдХреЗ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд╕реЗрдЯ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ Zend Gdata рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП Symfony2 рдФрд░ Zend рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реВрдВрдЧрд╛ -
Google рдбреЗрдЯрд╛ рдПрдкреАрдЖрдИ [2] рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ Symfony2 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ README рдорд╛рдирдХ symfony2 рд╡рд┐рддрд░рдг рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдм рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реБрдП рдЧрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг RC4 рд╣реИред рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдХрдорд╛рдВрдб рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕рд╕реЗ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдП, рдФрд░ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдореИрдВ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬреАрдЖрдИрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛
рдХреЛ рд╡реИрд╕реЗ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ ред [рей]
рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдЕрдкрд╛рдЪреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ PHP 5.3.2 (рдФрд░ рдЙрдЪреНрдЪрддрд░) рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╕реНрддреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ [4]ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ Zend Gdata рдХрд╛ рдПрдХреАрдХрд░рдг
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдирд┐рд░реНрдгрдп рдлреИрдмрд┐рдпрди рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдерд╛ред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЖрдк рдХрд╛рдлреА рдкрд╛рдЧрд▓ рд╕рдорд╛рдзрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╝реЗрдВрдб рд╡рд┐рддрд░рдг рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ред рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ [5]
рдкрд░ рднреА
рдЪрд░реНрдЪрд╛ рдЪрд▓ рд░рд╣реА рд╣реИ ред
рдЪреВрдВрдХрд┐ рдкреНрд▓рдЧ-рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рддрд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╕реЗ рдЙрдиреНрдирдпрди рдХреЗ рджреМрд░рд╛рди рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдЦрд░рд╛рдм рд╕реНрд╡рд╛рдж рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рд╕рд░реНрд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдирд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдорд╛рдирдХ Symfony2 рдФрд░ php рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░
Gdata рд╡рд┐рддрд░рдг рдбрд╛рдЙрдирд▓реЛрдб
рдХрд░реЗрдВ [6]ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рдореНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдБ:
vendor/
-> zend/
--> lib/
---> Zend/
----> [Zend directory from Zend GData package]
--> README
--> LICENSE
ZAD GData рд╡рд┐рддрд░рдг рд╕реЗ README рдФрд░ LICENSE рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рдПрдкреНрд▓рд┐рдХреЗрд╢рди / autoload.php рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ 'Zend_' рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ:
$loader->registerPrefixes(array(
рдЗрд╕рдХреЗ рдмрд╛рдж, рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ (рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрд▓рд░ рдХреЗ рд╕рдорд╛рди):
рдЕрдм Zend GData рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЙрдкрд╕рд░реНрдЧ 'Zend_' рджреНрд╡рд╛рд░рд╛ Symfony2 рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ Gdata рд╡рд┐рддрд░рдг рдореЗрдВ рд╕рднреА рдХрдИ рдЕрдиреИрддрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреА, рдЬреЛ рдХрд┐ change_path рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рд░реНрд╡рд░ рдкрд░ php.ini рдореЗрдВ рд╢рд╛рдорд┐рд▓_рдкрд╛рда рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛрдЧрд╛ред
рд╕реЗрд╡рд╛рдПрдВ
Symfony2 рд╢рдмреНрджрдХреЛрд╖ [7] рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ
рд╕реЗрд╡рд╛ рдХрд┐рд╕реА рднреА PHP рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рд╣реИ рдЬреЛ рдПрдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдпрд╛ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Zend_Gdata рдПрдХ рд╕реЗрд╡рд╛ рд╣реИред
рдЖрдЧреЗ, рд╣рдо рдПрдХ рдХрдВрд╕реЛрд▓ рдЯреАрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ Google GData API рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ blogspot.com рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдЧреАред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, GdataTestBundle рдмрдВрдбрд▓ рдмрдирд╛рдПрдВред рдЕрдм рдЬрдм рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрддреНрдпрдВрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
$ php app/console generate:bundle --namespace=Habr/GDataBundle --format=yml
рдЕрдм, src / Habr / GDataBundle / Resources / config / services.yml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ (рдЖрдкрдХреЛ рдмреНрд▓реЙрдЧрд░ рдкрд░ рдмреНрд▓реЙрдЧ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╡рд╛рд▓реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ ~ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ):
parameters: gdata.class: Zend_Gdata gdata.http_client.class: Zend_Gdata_HttpClient gdata.http_client_factory.class: Zend_Gdata_ClientLogin gdata.username: ~ # <email_address@gmail.com> gdata.password: ~ # <password> gdata.blog_id: ~ # <blog ID> gdata.service_name: blogger services: gdata_http_client: class: %gdata.http_client.class% factory_class: %gdata.http_client_factory.class% factory_method: getHttpClient arguments: - %gdata.username% - %gdata.password% - %gdata.service_name% gdata: class: %gdata.class% arguments: [@gdata_http_client]
рдЖрдЗрдП рд╣рдо рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВред Symfony2 рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рд░рд▓рддрдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░рдЗрдВрдЯрд░рдлреЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рд╕рдВрдмрдВрдз рд╣реЛрддреЗ рд╣реИрдВ рдФрд░, рдЕрдХреНрд╕рд░, рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рдЖрд░рдореНрдн рдореЗрдВ рджреВрд╕рд░реЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ gdata рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Zend_Gdata_HttpClient рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рд╣реИ - рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░рдЦрд╛рдирд╛ рд╡рд░реНрдЧ (Zend_Gdata_ClientLogin) рдХреА рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рддрд░реНрдХ рднреА рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реИрдХреНрдЯрд░реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП,
рд╕рд┐рдореНрдлрдиреА рдХреБрдХрдмреБрдХ [8]
рдкрд░ рд╡рд┐рд╢реЗрд╖ рдЕрдзреНрдпрд╛рдп рджреЗрдЦреЗрдВред
рдЬрдм рд╣рдо рдПрдХ рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрджрд░реНрд╢
рдЪрд▓рд┐рдП Blogger.com рд╕реЗ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдкреЛрд╕реНрдЯреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдмрд┐рд▓реНрдЯ-рдЗрди рдЬрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рднреА рдорджрдж рдХреА рдЬрд╛рдПрдЧреА (рдпрджрд┐ рдЖрдк рдореЙрдбрд▓ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рднреА рдмрд╛рдж рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
$ php app/console doctrine:generate:entity --entity="HabrGDataBundle:Post" --fields="title:string(255) content:text remote_id:string(255) created_at:datetime"
рдЕрдм src / Habr / GDataBundle / Entity рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЙрддреНрдкрдиреНрди Blog.php рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, DBMS рд╕реНрддрд░ рдкрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреА рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд┐рдЧ / рдкреИрд░рд╛рдореАрдЯрд░.рдЗрди рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:
[parameters] ; ... database_driver = pdo_mysql database_host = localhost database_name = habr database_user = root database_password = ; тАж
рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдХрджрдо рд╣реИ:
$ php app/console doctrine:database:create
рд╣рдо рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдмрдирд╛рддреЗ рд╣реИрдВ:
$ php app/console doctrine:schema:update --force
рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП phpmyadmin рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЯреАрдо
рдпрд╣ рдЗрдХрд╛рдИ, рдЬрд┐рд╕реЗ Symfony 1.4 рдореЗрдВ "рдХрд╛рд░реНрдп" рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, Symfony2 рдореЗрдВ рдПрдХ рдЯреАрдо рдмрди рдЧрдИред рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЕрднреА рддрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдирд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдВрдбрд▓ рд░реВрдЯ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рдХрдорд╛рдВрдб рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдЬрд╣рд╛рдВ рд╣рдо FetchFeedCommand.php рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рддреЗ рд╣реИрдВ (рдХрдорд╛рдВрдб рдкреНрд░рддреНрдпрдп рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред
рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди [9] (рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рд┐рдореНрдлрдиреА 2 рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╣реБрдордд) рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрддрд╛ рд╣реВрдВ:
рдЕрдм рдЖрдк рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ ред/app/console рдЗрд╕рдХреЗ рдирд╛рдо рдХреЛ, рд╕реЗрдЯрдирд╛рдо рдореЗрдВ рдХреЙрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
$ ./app/console gdata:blogger:fetch-feed
рдкрд░рд┐рдгрд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдкреЛрд╕реНрдЯ рдЯреЗрдмрд▓ рдореЗрдВ рд╕рднреА рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреБрдЫ рд╣рдж рддрдХ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Blogger.com рд╕реЗ рдУрдкрди рдмреНрд▓реЙрдЧ рдлреАрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЬреЛ рд▓реЛрдЧ Symfony2 рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдпрд╛рдо рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдПрдХ рдирдП рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛ рд▓рд┐рдВрдХ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рджрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдм рд╕рд┐рдореНрдлрдиреА 2 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА, рд▓реЗрдХрд┐рди рдЕрд╕реНрдерд┐рд░ рдЪреАрдЬ" рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдврд╝реА рд╣реИред рдЧрдВрднреАрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рд╣реИред
рдкреАрдПрд╕ рдореИрдВ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдорджрдж рдХреАред
рд╕рдВрджрд░реНрдн
- рд╕рд┐рдореНрдлрдиреА рдФрд░ рдЬрд╝реЗрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ рд╕рд╛рде - 2009
- GData API
- рд╡рд┐рдХреНрд░реЗрддрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЙрдкреЗрдХреНрд╖рд╛
- Symfony2 рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ
- Stackoverflow рдкрд░ Symfony2 рдореЗрдВ Zend_GData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди
- ZD GData рдбрд╛рдЙрдирд▓реЛрдб рдкреГрд╖реНрда
- рд╕рд┐рдореНрдлрдиреА 2 рд╢рдмреНрджрд╛рд╡рд▓реА
- рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
- рдХрдВрд╕реЛрд▓ / рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдХрдорд╛рдВрдб рдХреИрд╕реЗ рдмрдирд╛рдПрдВ