рдпрд╣ PHP рдлреЙрд░реНрдореЗрдЯрд░ рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?
- рдЖрдзреБрдирд┐рдХ PHP рдХреЛрдбрдмреЗрд╕ рдХреЗ рд▓рд┐рдП PSR-12тАУрд╕рдВрд░реЗрдЦрд┐рдд рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ
- Prettier + @prettier/plugin-php рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╕реНрдерд┐рд░, рдирд┐рд╢реНрдЪрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП
- рдЗрдВрдбреЗрдВрдЯ рдЖрдХрд╛рд░, рд╕реНрдкреЗрд╕ рдмрдирд╛рдо рдЯреИрдм, рдФрд░ рд░реИрдк / рд▓рд╛рдЗрди рд▓рдВрдмрд╛рдИ рдХреЗ рд╡рд┐рдХрд▓реНрдк
- рд╕реНрдкреЗрд╕рд┐рдВрдЧ, рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рдРрд░реЗ, рдХрдВрдЯреНрд░реЛрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдФрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ
- .php, .phtml, .php5, .php4 рдФрд░ .inc рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
- рддреЗрдЬрд╝ рдЗрди-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ, рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдмреИрдХрдПрдВрдб рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде
- Laravel, Symfony, WordPress, рдХрд╕реНрдЯрдо рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рд▓реЗрдЧреЗрд╕реА рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░реАрди
ЁЯФз 4 рдЪрд░рдгреЛрдВ рдореЗрдВ PHP рдХреЛрдб рдХреЛ рд╕реБрдВрджрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ for php-formatter
1. рдЕрдкрдирд╛ рдХреЛрдб рдкреЗрд╕реНрдЯ рдпрд╛ рдбреНрд░реЙрдк рдХрд░реЗрдВ
рдЕрдкрдирд╛ PHP рдХреЛрдб рдПрдбрд┐рдЯрд░ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ, рдпрд╛ `.php` / `.phtml` / `.inc` рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдХрд░реЗрдВред рдЯреВрд▓ PHP рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред
2. рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдЕрдкрдирд╛ рдЗрдВрдбреЗрдВрдЯ рдЖрдХрд╛рд░ рдЪреБрдиреЗрдВ, рд╕реНрдкреЗрд╕ рдпрд╛ рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдкрд╕рдВрджреАрджрд╛ рд░реИрдк / рд▓рд╛рдЗрди рд▓рдВрдмрд╛рдИ рдЪреБрдиреЗрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ PSR-12тАУрд╢реИрд▓реА рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдЪрд┐рдд рд╣реИрдВред
3. "рдлрд╝реЙрд░реНрдореЗрдЯ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ Prettier рдХреЗ PHP рдЗрдВрдЬрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП **рдлрд╝реЙрд░реНрдореЗрдЯ** рджрдмрд╛рдПрдВред рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рд▓рдЧрднрдЧ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
4. рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдХреЙрдкреА рдХрд░реЗрдВ, рдФрд░ рдХрдорд┐рдЯ рдХрд░реЗрдВ
рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдЙрдЯрдкреБрдЯ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдЕрдкрдиреЗ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдпрд╛ `.php` рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рднрд╡рд┐рд╖реНрдп рдХреЗ рдбрд┐рдлрд╝реНрд╕ рдХреЛ рд╕рд╛рдл рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдл рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрдорд┐рдЯ рдХрд░реЗрдВред
рддрдХрдиреАрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдПрдБ
рдорд╛рдирдХ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдорд░реНрдерди
PHP рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдХреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдЖрдзреБрдирд┐рдХ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
| рд╕реБрд╡рд┐рдзрд╛ | рд╕рдорд░реНрдерд┐рдд | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ |
|---|---|---|
| PSR-12 рд╕рдВрд░реЗрдЦрдг | тЬЕ рд╣рд╛рдБ | PSR-12 рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдирд┐рд╢реНрдЪрд┐рдд рд╢реИрд▓реАред |
| PHP 7+ рд╕рд┐рдВрдЯреИрдХреНрд╕ | тЬЕ рд╣рд╛рдБ | рдиреЗрдорд╕реНрдкреЗрд╕, рд╕реНрдХреЗрд▓рд░ рдЯрд╛рдЗрдк рд╣рд┐рдВрдЯреНрд╕, рд░рд┐рдЯрд░реНрди рдЯрд╛рдЗрдкреНрд╕, рдирд▓рдПрдмрд▓ рдЯрд╛рдЗрдкреНрд╕, рдЖрджрд┐ред |
| PHP 8+ рд╕реБрд╡рд┐рдзрд╛рдПрдБ | тЬЕ рд╣рд╛рдБ | рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕, рдпреВрдирд┐рдпрди рдЯрд╛рдЗрдкреНрд╕, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░рдореЛрд╢рди, рдореИрдЪ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдиреНрд╕, рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдиреНрд╕ред |
| рд╢реЙрд░реНрдЯ рдРрд░реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ | тЬЕ рд╣рд╛рдБ | рдЬрд╣рд╛рдБ рдЙрдЪрд┐рдд рд╣реЛ, рдРрд░реЗ рдХреЛ рдЖрдзреБрдирд┐рдХ `[ ... ]` рд╢реИрд▓реА рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИред |
| рд╣реЗрд░реЗрдбреЙрдХ / рдирд╛рдЙрдбреЙрдХ | тЬЕ рд╣рд╛рдБ | рдЖрд╕рдкрд╛рд╕ рдХреА рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛ рд╕рд╛рдл рдХрд░рддреЗ рд╣реБрдП рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИред |
| рдорд┐рд╢реНрд░рд┐рдд PHP + HTML | тЬЕ рд╣рд╛рдБ | рдПрдореНрдмреЗрдбреЗрдб HTML рд╡рд╛рд▓реЗ рд╕рд╛рдорд╛рдиреНрдп `.php` рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдлреЙрд░реНрдореЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред |
рд╕рдлрд╛рдИ рдФрд░ рд▓реЗрдЖрдЙрдЯ рдирд┐рдпрдо
Prettier рдХрд╛ PHP рдЗрдВрдЬрди рдХреЗрд╡рд▓ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИтАФрдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред
| рдХреНрд╖реЗрддреНрд░ | рдХреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? | рдпрд╣ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ |
|---|---|---|
| рдЗрдВрдбреЗрдВрдЯреЗрд╢рди | рдЖрдкрдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдкреЗрд╕ рдпрд╛ рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрд╕рдВрдЧрдд рдЗрдВрдбреЗрдВрдЯ рдЖрдХрд╛рд░ | рд╕рдордп рдХреЗ рд╕рд╛рде рд╣рд╛рде рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдбреНрд░рд┐рдлреНрдЯ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред |
| рд╕реНрдкреЗрд╕рд┐рдВрдЧ | рдСрдкрд░реЗрдЯрд░реНрд╕, рдХреЙрдорд╛, рдХрдВрдЯреНрд░реЛрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдФрд░ рдХреАрд╡рд░реНрдб рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реНрдкреЗрд╕ | рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдФрд░ рдХрдВрдбреАрд╢рди рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред |
| рдмреНрд░реИрд╕реЗрд╕ рдФрд░ рдмреНрд▓реЙрдХреНрд╕ | рдХреНрд▓рд╛рд╕реЗрд╕, рдлрдВрдХреНрд╢рдиреНрд╕ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓-рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдмреНрд░реЗрд╕ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ | рд╕реНрдЯрд╛рдЗрд▓ рдпреБрджреНрдзреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдбрд┐рдлреНрд╕ рдХреЛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд░рдЦрддрд╛ рд╣реИред |
| рдРрд░реЗ | рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдорд▓реНрдЯреАрдкрд▓ рд▓рд╛рдЗрдиреНрд╕ рдкрд░ рдПрд▓рд┐рдореЗрдВрдЯреНрд╕, рд╕реБрд╕рдВрдЧрдд рдЯреНрд░реЗрд▓рд┐рдВрдЧ рдХреЙрдорд╛ рдирд┐рдпрдо | рдмрдбрд╝реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдРрд░реЗ рдФрд░ рдкреЗрд▓реЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред |
| рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ | рдлрдВрдХреНрд╢рдиреНрд╕, рдореЗрдердбреНрд╕ рдФрд░ рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЗ рдмреАрдЪ рдЙрдЪрд┐рдд рдЧреНрд░реБрдкрд┐рдВрдЧ | рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ, рдкрдардиреАрдп рд╕рдВрд░рдЪрдирд╛ рджреЗрддрд╛ рд╣реИред |
рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рдореЙрдбрд▓ рдФрд░ рд╕реАрдорд╛рдПрдБ
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рддреЗрдЬрд╝ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
| рдкрд╣рд▓реВ | рдореВрд▓реНрдп / рд╡реНрдпрд╡рд╣рд╛рд░ | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ |
|---|---|---|
| рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рдЗрдВрдЬрди | Prettier + @prettier/plugin-php | рдЬрдм рднреА рдкреНрд▓рдЧрдЗрди рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред |
| рдлреЙрд▓рдмреИрдХ | рд╕реБрд░рдХреНрд╖рд┐рдд `/api/php-formatter` рдмреИрдХрдПрдВрдб | рдХреЗрд╡рд▓ рддрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм PHP рдкреНрд▓рдЧрдЗрди рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред |
| рдЯрд╛рдЗрдордЖрдЙрдЯ | ~25 рд╕реЗрдХрдВрдб | рдпрджрд┐ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдЕрдиреБрд░реЛрдз рд░рджреНрдж рдХрд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред |
| рдЕрдзрд┐рдХрддрдо рдЗрдирдкреБрдЯ рдЖрдХрд╛рд░ (рдЯреЗрдХреНрд╕реНрдЯ) | ~2 MB | рдлреЙрд░реНрдореЗрдЯрд░ рд▓реЙрдЬрд┐рдХ рдореЗрдВ рд╣рд╛рд░реНрдб рдЧрд╛рд░реНрдбрд░реЗрд▓ред |
| рдЕрдзрд┐рдХрддрдо рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ (рдЕрдкрд▓реЛрдб) | ~5 MB | рдЯреВрд▓ рдХреЗ `maxFileSizeBytes` рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рддред |
рдЧреЛрдкрдиреАрдпрддрд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛
рдпрд╣ рдЯреВрд▓ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИред
| рдкрд╣рд▓реВ | рд╡реНрдпрд╡рд╣рд╛рд░ | |
|---|---|---|
| рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ | рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ Prettier рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ред | рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдб рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рднреЗрдЬрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред |
| рдмреИрдХрдПрдВрдб рдлреЙрд▓рдмреИрдХ | рдпрджрд┐ PHP рдкреНрд▓рдЧрдЗрди рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред | рдХреЗрд╡рд▓ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рддред |
| рд╕рдВрдЧреНрд░рд╣рдг | рдХрдЪреНрдЪреЗ рдЗрдирдкреБрдЯ рдХреЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрдЧреНрд░рд╣рдг рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред | рдХреЗрд╡рд▓ рдПрдХрддреНрд░рд┐рдд рддреНрд░реБрдЯрд┐/рдкреНрд░рджрд░реНрд╢рди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред |
| рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ | рдХрд┐рд╕реА рднреА рдСрдирд▓рд╛рдЗрди рдлреЙрд░реНрдореЗрдЯрд░ рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯреНрд╕, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдкреЗрд╕реНрдЯ рди рдХрд░реЗрдВред | рд╕реБрд░рдХреНрд╖рд╛-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдиреАрдп рдЯреВрд▓реНрд╕ рдФрд░ CI рдкрд░ рд░рдЦреЗрдВред |
рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди PHP рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ (Prettier рдФрд░ PHP-CS-Fixer)
рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреВрд░реЗ рд░реЗрдкреЛ рдореЗрдВ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╢реИрд▓реА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЯреВрд▓реНрд╕ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИрдВред
Node / npm
PHP рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде Prettier рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
npm install --save-dev prettier @prettier/plugin-phpрдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Prettier рдФрд░ рдЙрд╕рдХрд╛ PHP рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдПрдХрд▓ PHP рдлрд╝рд╛рдЗрд▓ рдлреЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ
npx prettier --write src/Example.php --parser phpрдЗрд╕ рдСрдирд▓рд╛рдЗрди рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдорд╛рди рд╢реИрд▓реА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рднреА PHP рдлрд╝рд╛рдЗрд▓реЗрдВ рдлреЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ
npx prettier "src/**/*.php" --parser php --writeрдкреВрд░реЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдлреЙрд░реНрдореЗрдЯреЗрдб рд░рдЦрддрд╛ рд╣реИред
PHP-CS-Fixer
Composer рдХреЗ рд╕рд╛рде PHP-CS-Fixer рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
composer global require friendsofphp/php-cs-fixerрдЖрдкрдХреЗ CLI рдЯреВрд▓рдХрд┐рдЯ рдореЗрдВ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА PHP-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдЯрд╛рдЗрд▓ рдлрд┐рдХреНрд╕рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
PSR-12 рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ
php-cs-fixer fix src --rules=@PSR12`src` рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕рднреА PHP рдлрд╛рдЗрд▓реЛрдВ рдкрд░ PSR-12 рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
PHP рдмреНрдпреВрдЯрд┐рдлрд╛рдпрд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ
Laravel / Symfony / API рдмреИрдХрдПрдВрдб
рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдпрд╛ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдЯреНрд░реЛрд▓рд░, рд╕реЗрд╡рд╛рдУрдВ рдФрд░ DTOs рдХреЛ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдХрд░реЗрдВред
- HTTP рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рдлреЙрд░реНрдо рд╣реИрдВрдбрд▓рд░ рдХреЗ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░реЗрдВред
- рдЯреАрдореЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рд╕реЗрд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВред
- рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдФрд░ APIs рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╕реНрдЯрд╛рдЗрд▓ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
// Before
class OrderController extends Controller{public function store(Request $request){$order=$this->service->create($request->all());return response()->json($order,201);}}
// After
class OrderController extends Controller
{
public function store(Request $request)
{
$order = $this->service->create($request->all());
return response()->json($order, 201);
}
}
WordPress рдФрд░ рд▓реАрдЧреЗрд╕реА рдХреЛрдбрдмреЗрд╕
рд╕рдм рдХреБрдЫ рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдкреБрд░рд╛рдиреЗ PHP 5 / 7 рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЖрдзреБрдирд┐рдХ рдорд╛рдирдХреЛрдВ рдХреЗ рдХрд░реАрдм рд▓рд╛рдПрдВред
- рдбреАрдмрдЧрд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдереАрдо рдФрд░ рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдХреЛ рд╕реБрдВрджрд░ рдмрдирд╛рдПрдВред
- рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рдореИрд╕реА, рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВред
- рд▓реАрдЧреЗрд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ PSR-12 рдкрд░рдВрдкрд░рд╛рдУрдВ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдВред
рд╢рд┐рдХреНрд╖рдг рдФрд░ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛рдПрдВ
рдмреНрд░реИрд╕ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЗ рдмрдЬрд╛рдп рддрд░реНрдХ рдФрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рд╕реБрд╕рдВрдЧрдд рд╕реНрдЯрд╛рдЗрд▓ рдкрдардиреАрдпрддрд╛ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░рддреА рд╣реИред
- рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ/рдмрд╛рдж рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред
- рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдХреЛрдб рдирдореВрдиреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рд╕реИрдирд┐рдЯреА рдЪреЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
// Example exercise: ask students to predict the formatted result
if($user&&$user->isAdmin()){logAction($user,"login");}
тЭУ Frequently Asked Questions
тЭУрдХреНрдпрд╛ рдпрд╣ рдЯреВрд▓ рдЖрдзреБрдирд┐рдХ PHP 8 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?
ЁЯФзрдХреНрдпрд╛ рдореИрдВ рдЯреИрдм рдЪреМрдбрд╝рд╛рдИ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рд╕реНрдкреЗрд╕ рдХреЗ рдмрдЬрд╛рдп рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
ЁЯУПрд▓рд╛рдЗрди рд░реИрдкрд┐рдВрдЧ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реА рдЬрд╛рддреА рд╣реИ?
ЁЯФРрдХреНрдпрд╛ рдореЗрд░рд╛ рдХреЛрдб рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
API рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрдирдкреБрдЯ рдХреЛ рдХреНрд╖рдгрд┐рдХ рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рдЧреБрдкреНрдд рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПредЁЯзордХреНрдпрд╛ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдореЗрд░реЗ PHP рдХреЛрдб рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓ рджреЗрдЧреА?
тЪЩя╕ПрдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдЯрд╛рдЗрд▓ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реВрдВ?
Pro Tips
рдЕрдкрдиреА CI рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдПрдХ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рд╕реНрдЯреЗрдк (Prettier рдпрд╛ PHP-CS-Fixer) рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЕрдирдлреЙрд░реНрдореЗрдЯреЗрдб PHP `main` рддрдХ рди рдкрд╣реБрдВрдЪреЗред
рдкреБрд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлреЙрд░реНрдореЗрдЯрд░ рдЪрд▓рд╛рдПрдВ рддрд╛рдХрд┐ рдбрд┐рдлреНрдлрд╝ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣реЗрдВ, рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдкрд░ рдирд╣реАрдВред
рдмрдбрд╝реЗ рд░рд┐рдлреИрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП, рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдмреНрд░рд╛рдВрдЪ рдкрд░ рдПрдХ рдмрд╛рд░ рдлреЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ, рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░реЗрдВ, рдлрд┐рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ PRs рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВред
рдСрдирд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдЯрд░реНрдорд┐рдирд▓реНрд╕ рдХреА рддрд░рд╣ рд╕рдордЭреЗрдВ: рдкреНрд░реЛрдбрдХреНрд╢рди рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдХреАрдЬрд╝ рдХреЛ рдХрд┐рд╕реА рднреА рд╡реЗрдм рдлреЙрд░реНрдо рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред
Additional Resources
Other Tools
- рд╕реАрдПрд╕рдПрд╕ рд╕реБрдВрджрд░реАрдХрд░рдг
- рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реБрдВрджрд░реАрдХрд░рдг
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрдВрджрд░реАрдХрд░рдг
- рдкреАрдПрдЪрдкреА рд╕реБрдВрджрд░реАрдХрд░рдг
- рд░рдВрдЧ рдЪрдпрдирдХрд░реНрддрд╛
- рд╕реНрдкреНрд░рд╛рдЗрдЯ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯрд░
- рдмреЗрд╕64 рдбрд┐рдХреЛрдбрд░
- рдмреЗрд╕64 рдПрдирдХреЛрдбрд░
- рд╕реАрд╢рд╛рд░реНрдк рдлреЙрд░реНрдореЗрдЯрд░
- рд╕реАрдПрд╕рд╡реА рдлреЙрд░реНрдореЗрдЯрд░
- Dockerfile Formatter
- рдПрд▓реНрдо рдлреЙрд░реНрдореЗрдЯрд░
- рдИрдПрдирд╡реА рдлреЙрд░реНрдореЗрдЯрд░
- рдЧреЛ рдлреЙрд░реНрдореЗрдЯрд░
- рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рдлреЙрд░реНрдореЗрдЯрд░
- рдПрдЪрд╕реАрдПрд▓ рдлреЙрд░реНрдореЗрдЯрд░
- рдЖрдИрдПрдирдЖрдИ рдлреЙрд░реНрдореЗрдЯрд░
- рдЬреЗрдПрд╕рдУрдПрди рдлреЙрд░реНрдореЗрдЯрд░
- рд▓реЗрдЯреЗрдХреНрд╕ рдлреЙрд░реНрдореЗрдЯрд░
- рдорд╛рд░реНрдХрдбрд╛рдЙрди рдлреЙрд░реНрдореЗрдЯрд░
- рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡рд╕реА рдлреЙрд░реНрдореЗрдЯрд░
- рдкреНрд░реЛрдЯреЛ рдлреЙрд░реНрдореЗрдЯрд░
- рдкрд╛рдпрдерди рдлреЙрд░реНрдореЗрдЯрд░
- рд░реВрдмреА рдлреЙрд░реНрдореЗрдЯрд░
- рд░рд╕реНрдЯ рдлреЙрд░реНрдореЗрдЯрд░
- рд╕реНрдХрд╛рд▓рд╛ рдлреЙрд░реНрдореЗрдЯрд░
- рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреЙрд░реНрдореЗрдЯрд░
- рдПрд╕рдХреНрдпреВрдПрд▓ рдлреЙрд░реНрдореЗрдЯрд░
- SVG рдлреЙрд░реНрдореЗрдЯрд░
- Swift рдлреЙрд░реНрдореЗрдЯрд░
- TOML рдлреЙрд░реНрдореЗрдЯрд░
- Typescript Formatter
- XML рдлреЙрд░реНрдореЗрдЯрд░
- YAML рдлреЙрд░реНрдореЗрдЯрд░
- Yarn рдлреЙрд░реНрдореЗрдЯрд░
- рд╕реАрдПрд╕рдПрд╕ рдорд┐рдиреАрдлрд╛рдпрд░
- Html Minifier
- Javascript Minifier
- рдЬреЗрдПрд╕рдУрдПрди рдорд┐рдиреАрдлрд╛рдпрд░
- XML рдорд┐рдирд┐рдлрд╛рдпрд░
- рдПрдЪрдЯреАрдЯреАрдкреА рд╣реЗрдбрд░реНрд╕ рджрд░реНрд╢рдХ
- рдкреАрдбреАрдПрдл рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ
- рд░реЗрдЧреЗрдХреНрд╕ рдкрд░реАрдХреНрд╖рдХ
- рдПрд╕рдИрдЖрд░рдкреА рд░реИрдВрдХ рдЬрд╛рдВрдЪрдХрд░реНрддрд╛
- Whois рд▓реБрдХрдЕрдк