рд╣рд╛рдп, рд╕рдмреНрд░!
рд╣рд╛рд▓ рд╣реА рдореЗрдВ
DevConf 2012 рд╕рдореНрдореЗрд▓рди рдХреЗ рдирд┐рд╢рд╛рди рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдкрдиреА рдиреЛрдЯрдмреБрдХ рд╕реЗ рдиреЛрдЯреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ред рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдпрд╣ рд╕рдм рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХрдИ рдХрдорд░реЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рдереА, рдЙрди рд╕рднреА рдХрд╛ рджреМрд░рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдврд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рд╡рд╛рд▓реЗ рд╡рд┐рд╖рдп рдереЗ:
- рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдФрд░ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг (рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг)
- PHP 5.4, PHPUnit, Yii
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг
рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдФрд░ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг (CI)
рдкреНрд░рдгрд╛рд▓реА рдХреА рддреИрдирд╛рддреА рд╕рдореНрдореЗрд▓рди рдХрд╛ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рд╖рдп рдмрди рдЧрдпрд╛, рдЗрд╕рдореЗрдВ 3 рдпрд╛ 4 рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рдереАрдВред рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛: рдПрдХ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд░ рд░рд╛рдд рднрдВрдбрд╛рд░ рд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИ, рд╕рдВрднрд╛рд╡рд┐рдд рдЬрд╛рдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрддрд╛ рд╣реИред рд╕реБрдмрд╣ рдЖрдк рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рддреИрдпрд╛рд░ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреА рд╕реНрдкрд╖реНрдЯ рд╕рдордЭ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ
рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк
рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛
рдЧрдпрд╛ рдерд╛ :
-
рдЬреЗрдирдХрд┐рдВрд╕рд╕рд╣рд┐рдд рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд▓рдЧрдЗрди рдЪрдХ рдиреЙрд░рд┐рд╕ рд╣реИ)
-
рдЯреАрдорд╕рд┐рдЯреАрдЬреЗрдирдХреАрдВрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕
-
phpundercontrol- рдХреБрдЫ рдФрд░
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
-
рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ-
рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛрд░реВрдмреА рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ php рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░реВрдмреА рдХреЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд┐рдореНрдлрдиреА рдХреЗ рд▓рд┐рдП рдХреИрдкрд┐рдлреЛрдиреА рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
-
рдлрд┐рдВрдЧphp рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдХрдИ рддреИрдпрд╛рд░ рдХрд╛рд░реНрдп рд╣реИрдВред рдмрд┐рд▓реНрдб рдХреЛ xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдореИрдВрдиреЗ рдбрд┐рдлреЙрд▓реНрдЯ рдбрд┐рд▓реАрд╡рд░реА рд╕реЗ рд░реЛрд▓рдмреИрдХ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдХрдореА рд╕реБрдиреА (рдЖрдкрдХреЛ рдЦреБрдж рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ)ред
PHP рдХреЛрдб рдХреЗ
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП ,
PHPUnit рдХрд╛ рдорд╛рдирдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рдирд╛рд░реЗ рдкрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ
рд╕рдВрд╣рд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХреА, рдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ
рдкреЛрд╕реНрдЯ рдерд╛)
GIVEN-WHEN-THEN рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдпрд╛рдиреА, рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рд╕реАрдзреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░рдирд╛):
function testMethodAbc() {
PHP рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдЪреНрдЫреЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдпрд╛ рдХрдорд┐рдЯ рдХрд░рдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
-
рд▓рд┐рдВрдЯ (рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рддреНрдпрд╛рдкрди)
-
PHP_CodeSniffer (рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди)
-
phploc (рд╡рд┐рднрд┐рдиреНрди рдЖрдБрдХрдбрд╝реЗ рдЬреИрд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЖрджрд┐)
-
PHP_Depend (рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреБрдгрд╛рдВрдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛, рдЬреИрд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╡рд░реНрдЧ, рдЖрджрд┐)
-
PHP_Mess рдбрд┐рдЯреЗрдХреНрдЯрд░ (рдХреЛрдб рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдЬрд╛рдо рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ)
-
PHP_ рдХреЛрдб рдХрд╡рд░реЗрдЬ (рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╡рд░реЗрдЬ, PHPUnit рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ)
-
PHP рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдбрд┐рдЯреЗрдХреНрдЯрд░ (рдЦреБрдж рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рди рдХрд░реЗрдВ :))
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рддреИрдирд╛рддреА рдХреЗ рдЦрд╛рддреЗ рдкрд░
dbDeploy рдиреЗ рд╕рд▓рд╛рд╣ рджреАред рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рд╡рд░реНрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдмрд▓ рдХреЛ рд╣рдЯрд╛рддреЗ рд╕рдордп) рд▓рд┐рдЦрдирд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЯрд┐рдк рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдзрд╛рд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдзрд╛рд░ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдбрдВрдк рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЦреИрд░,
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЕрдиреБрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ,
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдереА:
1. рд╕реНрд░реЛрдд рдХреЛ рдПрдХ рдирдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ
2. рдЖрд╢реНрд░рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдКрдкрд░ рдЦреАрдВрдЪреЛ
3. рд░реЛрд▓ рдЕрдкрдбреЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕
4. рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рдорд▓рд┐рдВрдХ рдлреЗрдВрдХреЗрдВ
5. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдорд▓рд┐рдВрдХ рдлреЗрдВрдХреЗрдВ
6. "рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВред рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ - рд░реЛрд▓рдмреИрдХред (рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП)
7. рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдИрдореЗрд▓ рднреЗрдЬреЗрдВ
PHP 5.4 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ
PHP 5.4 = PHP6.0 рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ - рдпреВрдирд┐рдХреЛрдб рдиреЗ рдХрд╣рд╛ред
рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВ:
- рдЕрд╢реБрджреНрдзрд┐рдпрд╛рдБ (рд▓рдХреНрд╖рдг),
- рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП [] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реЗрдм рд╕рд░реНрд╡рд░
рдпрд╣ рдЬрд╛рдирдирд╛ рднреА рдорджрджрдЧрд╛рд░ рдерд╛ рдХрд┐ рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬ 5.4.5 рдФрд░ 5.4.6 рдЕрдЧрд▓реЗ рджреЛ рдорд╣реАрдиреЛрдВ рдореЗрдВ рд░рд┐рд▓реАрдЬ рд╣реЛрдЧреАред
рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рдереЗ:
Q1: рдпреВрдирд┐рдХреЛрдб ... рдХрдм?
A1: рд╡рд░реНрд╖ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рджрд╕ рд╕рд╛рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ ... рд╣рдореЗрдВ рдЖрдкрдХреЗ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
Q2: PHP рдореЗрдВ APC рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
A2: рд╣рдо рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди APC рдХрднреА-рдХрднреА рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИредYii / yii2
рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдордХрд╛рд░реЛрд╡ (
рд╕реИрдордбрд╛рд░реНрдХ ) рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ - рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдореБрдЦреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХред
Yii2 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрдЦреНрдп рдкреНрд░рд╢реНрди:
- Yii2 рд░рд┐рд▓реАрдЬ рдХреА рддрд╛рд░реАрдЦ рдЧреБрдкреНрдд рд░рдЦреА рдЬрд╛рддреА рд╣реИ
- рдЯреАрдо рдореЗрдВ рдЕрдм рддреАрди рд╕рдХреНрд░рд┐рдп рдкреНрд░рддрд┐рднрд╛рдЧреА + рдПрдХ рдЬреАрдердм рд╕рдореБрджрд╛рдп рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдорд░реНрдерди рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- Yii2 рдореЗрдВ ActiveRecord рдордЬрдмреВрдд рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ рдореЙрдбрд▓ рдФрд░ рдХреНрд╡реЗрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдореМрдЬреВрджрд╛ DbCriteria рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛
- рдХреЗрд╡рд▓ рджреЛ рд▓рд┐рдВрдХ рд╣реА рд░рд╣реЗрдВрдЧреЗ: HAS_ONE рдФрд░ HAS_MANYред рд╡реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрдЪрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ
- рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
- рдЕрднреА рднреА рдХреБрдЫ рд╕реБрдзрд╛рд░ рдереЗ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛
рдЬреЗрдПрд╕ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг
JS рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, Yahoo рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдврд╛рдВрдЪрд╛ рд╣реИ:
YUI рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ ред рдпрд╣ рд╕рдм рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ js рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдЬрд╛рдХреНрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
Sinon.js рдХреЛ рд╕рд▓рд╛рд╣ рджреА
рдЧрдИ рдереА ред рдЗрд╕рдореЗрдВ, рдЖрдк рдмрд╣реБрдд рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ
jsTestDriver рдХреЛ рдЕрдзрд┐рдХ рд╣рд▓реНрдХреЗ рд╕рдорд╛рдзрд╛рди (рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрдо рд╕рдореГрджреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдпрд╣реА рд╕рдм рдиреАрдЪреЗ рдХреА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдореЗрд░реЗ рд╕рд╛рде рд╣реБрдЖред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдореНрдореЗрд▓рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдФрд░ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдерд╛ред рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ - рд▓рд┐рдЦреЗрдВред
рдмреНрд░реЗрдХ рдореЗрдВ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдХреЗрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╡рдХреНрддрд╛рдУрдВ рдФрд░ рдЖрдпреЛрдЬрдХреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рдпреБрдкреАрдбреА:рдХреБрдЫ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдФрд░ рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд▓рд┐рдВрдХ:
1.
PHP рдкреНрд░рджрд░реНрд╢рди ( рд░рд╛рд╕рдорд╕ рд▓реЗрд░рдбреЛрд░реНрдл ) (
рд╕рд╛рднрд╛рд░ рд╕рдорд░рдХ , рдлреНрд▓рд┐рдкрд┐рдВрдЧ рдПрд░реЛ)
2.
Vorotilin рджрд┐рдорд┐рддреНрд░реА Sprockets рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ (рдзрдиреНрдпрд╡рд╛рдж @ py3u)
3.
рдПрдЧреЛрд░ рдЦреЛрдорд┐рдпрд╛рдХреЛрд╡
OAuth рдореЗрдВ рднреЗрджреНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ (рдзрдиреНрдпрд╡рд╛рдж @ py3u)
4.
рдХреБрдЫ рддрд╕реНрд╡реАрд░реЗрдВ рдФрд░ рд╕рдореНрдореЗрд▓рди рдХреА рд░рд┐рдкреЛрд░реНрдЯ (рдзрдиреНрдпрд╡рд╛рдж
zizop )