рдкреЗрд╢ рд╣реИ рд╕рд┐рдореНрдлрдиреА 2

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

1. рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕


рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рд╡рд┐рддрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ standart рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЕрдЧрд▓рд╛, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдЖрдкрдХреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: http: //localhost/Symfony/web/config.php ред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╕рд┐рдореНрдлрдиреА / рд╡реЗрдм / app_dev.php

$kernel->loadClassCache();

рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рд╕рдорд╛рдзрд╛рди, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреИрд╢ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЛрдб рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

2. рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ



рд╕рд┐рдореНрдлрдиреА 2 рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ, рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрдВрдбрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдиреЗ рдЕрд▓рдЧ рдмрдВрдбрд▓ рдореЗрдВ рд╣реЛрдЧрд╛ред рд╕рд┐рдореНрдлрдиреА рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдирдП рдмрдВрдбрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХрдорд╛рдВрдб рд╣реИ:

php app/console generate:bundle --namespace=Demos/BlogBundle

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

3. рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд░реВрдЯрд┐рдВрдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ


рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреА рддрд░рд╣, рд╕рд┐рдореНрдлрдиреА рдПрдорд╡реАрд╕реА рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЖрдЦрд┐рд░реА рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╕рд┐рдореНрдлрдиреА рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░рд┐рдЪрд┐рдд рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред рдирд┐рдпрдВрддреНрд░рдХред
рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ рдмрдВрдбрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ, рдЗрд╕реЗ DefaultController рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ src / Demos / BlogBundle / рдирд┐рдпрдВрддреНрд░рдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕рдПрдХреНрд╢рди рдПрдХреНрд╢рди рд▓рд╛рдЧреВ рд╣реИред рдЕрдм рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ http: //localhost/Symfony/web/app_dev.php/hello/username рдкрддрд╛ рдЦреЛрд▓реЗрдВред
рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкреГрд╖реНрда рдХрд╛ рдРрд╕рд╛ рдкрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк PHPDoc рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ (рдпреЗ рд╡рд┐рд╢реЗрд╖ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рд╡рд░реНрдгрдорд╛рд▓рд╛ рд╕рдорд╛рд░реЛрд╣ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрдгреЛрдВ (**) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рд╕рдм рдХреБрдЫ рд╕рдордЭ рдЬрд╛рдПрдВрдЧреЗред рд░реВрдЯ рдПрдиреЛрдЯреЗрд╢рди рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкрддреЗ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рднреА рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд┐рдореНрдлрдиреА рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред рдПрдХ рддрд░рдл, рд╡реЗ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рд╡реЗ рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдИрдИ рдореЗрдВ рд╕реНрд╡рдд: рдкреВрд░реНрдг рджреНрд╡рд╛рд░рд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдЯрд┐рдВрдЧ рдШрдЯрдХ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреИрд╕реЗ рджрд┐рдЦреЗрдВрдЧреЗ, рдпрд╣ рдЖрдкрдХреЛ рдмрд╣реБрдд рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕ рдкрддреЗ рдкрд░ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдХреНрдпреЛрдВ рдЦреБрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ рдмрд╣реБрдд рдзреНрдпрд╛рди рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рдХрд┐ рдмрдВрдбрд▓ рдЬрдирд░реЗрдЯрд░ рдХреНрдпрд╛ рдорд╛рдБрдЧ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╡рд╛рд▓ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реЛрдВрдЧреЗ рдХрд┐ рдирдП рдмрдВрдбрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд╛рдЙрдЯрд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рдЪреВрдХ рдЧрдП рд╣реИрдВ, рддреЛ рдЖрдк рдлрд╝рд╛рдЗрд▓ Symfony \ app \ config \ routing.yml рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

DemosBlogBundle:
resource: "@DemosBlogBundle/Controller/"
type: annotation
prefix: /

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдирд╛рдо рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рдмрдВрдбрд▓ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╣рд╛рдБ рдЖрдпрд╛рдд рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝реЗрдВрдЧреЗ, рдФрд░ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдЦреИрд░, рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдПрдиреЛрдЯреЗрд╢рди рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдЙрдкрд╕рд░реНрдЧ рд╣рдорд╛рд░реЗ рдмрдВрдбрд▓ рд╕реЗ рд╕рднреА рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рдпреВрдЖрд░рдПрд▓ рдЗрдирдкреБрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдУрд░ рд╕реЗ рд╕реАрдзреЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП / рдмрджрд▓реЗрдВ / рдмреНрд▓реЙрдЧ рдХреЛред
рдЕрдм рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдХрд░реЗрдВрдЧреЗ рд╡рд╣ http: //localhost/Symfony/web/app_dev.php/blog рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

4. рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛: рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдирд╛


рдЕрдм рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рдореИрдВ Doctrine рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдИ рднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИ, рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд┐рдореНрдлрдиреА рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЦреБрд╢реА рдХреА рдмрд╛рдд рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд╝рд┐рдЧ / рдкреИрд░рд╛рдореАрдЯрд░реНрд╕.рдЗрди рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред рд╡реИрд╕реЗ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ yml рдореЗрдВ рдХреНрдпреЛрдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рдПрдХ ini-file рдореЗрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ рдЧреИрд░-рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣реИ, рддреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:
php рдРрдк / рдХрдВрд╕реЛрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд: рдбреЗрдЯрд╛рдмреЗрд╕: рдмрдирд╛рдПрдБ
рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реА рдЗрд╕реЗ рдмрдирд╛рдПрдВрдЧреЗред
рд╕рд┐рджреНрдзрд╛рдВрдд рдПрдХ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд ORM рд╣реИ , рд▓реЗрдХрд┐рди ActiveRecord рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕реЗ рдордЬрдмреВрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХрдИ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рдбреЗрдЯрд╛ рдореЗрдкрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЙрд╕ рд╕рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рд╣реЛрдЧрд╛ред Src / Demos / BlogBundle / Entity рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБред рдЗрд╕рдореЗрдВ, Post.php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕реЗ рдирд┐рдореНрди рдХреЛрдб рд╕реЗ рднрд░реЗрдВ:

<?php
namespace Demos\BlogBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="post")
*/
class Post {

/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\Column(type="string", length=255)
*/
protected $title;

/**
* @ORM\Column(type="text")
*/
protected $body;

/**
* @ORM\Column(type="datetime")
*/
protected $created_date;

/**
* @ORM\Column(type="datetime")
*/
protected $updated_date;
}


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

php app/console doctrine:generate:entities Demos/BlogBundle/Entity/Post

рдЕрдм Post.php рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦреЗрдВ, рдЗрд╕рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ, рдЗрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд░реЗрдВ:

php app/console doctrine:schema:update --force

рдпрджрд┐ рд╕рдм рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛ рдЧрдпрд╛, рддреЛ рдкреЛрд╕реНрдЯ рдЯреЗрдмрд▓ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдЖрдЗрдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред DefaultController рдХреНрд▓рд╛рд╕ рдореЗрдВ, рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдВ:

/**
* @Route("/create")
*/
public function createAction() {
$post = new Post();
$post->setTitle('Demo Blog');
$post->setBody('Hello Symfony 2');
$post->setCreatedDate(new \DateTime("now"));
$post->setUpdatedDate(new \DateTime('now'));

$em = $this->getDoctrine()->getEntityManager();
$em->persist($post);
$em->flush();

return new Response('Created product id ' . $post->getId());
}


рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

use Demos\BlogBundle\Entity\Post;
use Symfony\Component\HttpFoundation\Response;


рдЕрдм рдпрджрд┐ рдЖрдк http: //localhost/Symfony/web/app_dev.php/blog/create рдкрддрд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдореМрдЬреВрджрд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдмрдирд╛рдПрдБред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд░рд┐рдХреЙрд░реНрдб рдЖрдИрдбреА рд▓реЗ рдЬрд╛рдПрдЧрд╛ред

<?php
/**
* @Route("/show/{id}")
*/
public function showAction($id)
{
$post = $this->getDoctrine()->getRepository('DemosBlogBundle:Post')->find($id);

if (!$post) {
throw $this->createNotFoundException(' !');
}

$html = <<<HTML
<h1>{$post->getTitle()}</h1>

<p>{$post->getBody()}</p>

<hr/>
<small> {$post->getCreatedDate()->format("Ymd H:i:s")}</small>
HTML;

return new Response($html);
}
?>


рдЕрдм рдЖрдк рд▓рд┐рдВрдХ http: //localhost/Symfony/web/app_dev.php/blog/show/1 рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╡рд░рдгред

5. рдЯрд╣рдиреА: рдкрд╣рд▓рд╛ рдЦрд╛рдХрд╛


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

return array('name' => $name);

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

/**
* @Route("/show/{id}")
* @Template()
*/
public function showAction($id)
{
$post = $this->getDoctrine()->getRepository('DemosBlogBundle:Post')->find($id);

if (!$post) {
throw $this->createNotFoundException(' !');
}

return array('post' => $post);
}


рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рдЕрдм, src / Demos / BlogBundle / Resources / views / Default рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, show.html.twig рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо html рдХреЛрдб рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдереАред рдЯреНрд╡рд┐рдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ php рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг, рд╕реНрд░реЛрдд рджреЗрдЦреЗрдВред рдЖрдк рдЗрд╕рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЯреНрд╡рд┐рдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред

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


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

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


All Articles