NoVerify: VKontakte рдЯреАрдо рд╕реЗ PHP рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдирд░ рдЕрдм рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рд╣реИ



рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдХреИрд╕реЗ рдПрдХ рд▓рд┐рдВрдЯрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЧрд┐рдЯ рдкреБрд╢ рдХреЗ рджреМрд░рд╛рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рддреЗрдЬрд╝ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ 5-10 рд╕реЗрдХрдВрдб рдореЗрдВ PHP рдореЗрдВ 5 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдХреЛрдб рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдЗрд╕реЗ NoVerify рдХрд╣рд╛ред

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

рд╣рдореЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдВрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ


2018 рдХреЗ рдордзреНрдп рдореЗрдВ, рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ PHP рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдирд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдерд╛ред рджреЛ рд▓рдХреНрд╖реНрдп рдереЗ: рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рд╢реИрд▓реА рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреА рдЕрдзрд┐рдХ рд╕рдЦреНрддреА рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рддреНрд░реБрдЯрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░реЛрдХрдерд╛рдо рдкрд░ рдереА: рдХреЛрдб рдореЗрдВ рдЕрдШреЛрд╖рд┐рдд рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЕрдиреБрдкрд▓рдмреНрдз рдХреЛрдб, рдФрд░ рдЕрдиреНрдпред рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╕реНрдЯреЗрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдмреЗрд╕ (рд▓реЗрдЦрди рдХреЗ рд╕рдордп PHP рдХреЛрдб рдХреА 5-6 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреНрд╕) рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рдЬрд▓реНрджреА рдХрд╛рдо рдХрд░реЗред

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

рдХреНрдпреЛрдВ рдирд╣реАрдВ


PHP рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП (рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ 5-6 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ), рдЗрд╕реЗ рддреБрд░рдВрдд "рдареАрдХ" рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд▓рд╛рдЗрдирд░ рдореЗрдВ рд╣рдорд╛рд░реА рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХреЗред рдлрд┐рд░ рднреА, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрджрд▓рддреЗ рдХреЛрдб рдзреАрд░реЗ-рдзреАрд░реЗ рдХреНрд▓реАрдирд░ рдмрди рдЬрд╛рдПрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЦреНрддреА рд╕реЗ рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд▓рд┐рдВрдЯрд░ рдХреЛ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреА рдХрд╕рдо рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред

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

рд▓реЗрдХрд┐рди рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд┐рдирд╛ рд╕реНрдерд╛рдиреАрдп рд╣реБрдХ рдХреЗ рдзрдХреНрдХрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ - git push --no-verify рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рд╡рд┐рдХрд▓реНрдк --no-verify рдФрд░ рдПрдХ рд▓рд╛рдЗрдирд░ рдХреЛ рдПрдХ рдирд╛рдо рджрд┐рдпрд╛ :)

рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рдереЗ


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

рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА:

  • PHPStan - рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб, рдСрдЯреЛрд▓реИрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреЛрдб рдЖрдзрд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ 30% рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ;
  • рдлрд╝рд╛рди - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 20 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рддреНрд╡рд░рд┐рдд рдореЛрдб рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг 20 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж 5% рддрдХ рд░реБрдХ рдЧрдпрд╛;
  • рднрдЬрди - рдСрдЯреЛрд▓реИрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ 10 рдорд┐рдирдЯ рд▓рдЧреЗ (рдореИрдВ рдЕрднреА рднреА рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛);
  • PHPCS - рд╢реИрд▓реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрд░реНрдХ рдирд╣реАрдВ;
  • phpcf - рдХреЗрд╡рд▓ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЕрдкрдирд╛ рд▓рд┐рдЦрд╛ред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛?


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреВрд░реНрдг-рдЖрдзрд╛рд░рд┐рдд рд▓рд╛рдЗрдирд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдЪреВрдВрдХрд┐ рд▓рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХреА рдЧрддрд┐ рд╣реИ, PHP рдХреЗ рдмрдЬрд╛рдп рд╣рдордиреЗ рдЧреЛ рдХреЛ рдЪреБрдирд╛ред "рдлрд╛рд╕реНрдЯ" рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рд╣реИ, рдЕрдзрд┐рдорд╛рдирддрдГ 10 is20 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред рдЕрдиреНрдпрдерд╛, рдЪрдХреНрд░ "рдХреЛрдб рдХреЛ рд╕рд╣реА рдХрд░реЗрдВ, рд▓рд┐рдВрдЯрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ" рд╡рд┐рдХрд╛рд╕ рдХреЛ рдзреАрдорд╛ рдХрд░рдирд╛ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрдб рдХреЛ рдЦрд░рд╛рдм рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ :)

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

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдирд┐рд░реАрдХреНрд╖рдг: рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪред

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

 <?php if (rand()) { $a = 42; //  : { $a: int } } else { $b = "test"; $a = "another_test"; //  : { $b: string, $a: string } } //   : { $b: string?, $a: int|string } echo $a, $b; //       , //   $b    

рдпрд╣ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рд╕рд╛рдзрд╛рд░рдг рд╕рд╢рд░реНрдд рдмрдпрд╛рдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░реЗрдХ рдХреЗ рдмрд┐рдирд╛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ;

 <?php switch (rand()) { case 1: $a = 1; // { $a: int } case 2: $b = 2; // { $a: int, $b: int } default: $c = 3; // { $a: int, $b: int, $c: int } } // { $a: int?, $b: int?, $c: int } 

рдпрд╣ рдХреЛрдб рд╕реЗ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ $ c рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдВрдЯрд░ (рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рднреА) рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдореБрд╢реНрдХрд┐рд▓ рдХреНрд╖рдг рд╣реИрдВред

рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 <?php exec("hostname", $out, $retval); echo $out, $retval; // { $out: ???, $retval: ??? } 

рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдЬрд╛рдиреЗ рдмрд┐рдирд╛, рдпрд╣ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ $ рдЖрдЙрдЯ рдФрд░ $ рд░рд┐рдЯреЗрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рднрдВрдбрд╛рд░ github.com/JetBrains/phpstorm-stubs рд╕реЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреА, рдФрд░ рдЙрдирдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗрд╡рд▓ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдХреЗ рд╣реА рдЦреЛрдЬреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд╖реНрдкрд╛рджрди рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЛ рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЪрд░ $ рдмрд╛рд╣рд░ рдФрд░ $ рд░рд┐рдЯрд╡рд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ, рдЗрди рдЪрд░реЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд▓рд┐рдВрдЯрд░ рдХреЛ рдРрд╕реЗ рдХреЛрдб рдХреА рдХрд╕рдо рдирд╣реАрдВ рдЦрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЪрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

 <?php if (rand()) { $a = some_func(); } else { $a = other_func(); } $a->some_method($b); echo $b; 

рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ some_method рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП some_func () рдФрд░ other_func () рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░ $ b рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдЕрдХреНрд╕рд░ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ phpdoc рдПрдиреЛрдЯреЗрд╢рди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рд▓рдЧрднрдЧ рдЖрдзреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рддрд╛рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдирд┐рд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдВ


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



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

рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рд╕рдорд░реНрдерди рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд▓рд┐рдВрдЯрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдореЛрдб рдореЗрдВ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

  1. рдЪрд░ рдирд╛рдо, рд╕реНрдерд┐рд░рд╛рдВрдХ, рдХрд╛рд░реНрдп, рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпреБрдХреНрддрд┐рдпрд╛рдБред
  2. рд╡реНрдпреБрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВред
  3. рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рдПрдВред
  4. рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВред

"рдЖрд▓рд╕реА" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди


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

 <?php //  A.php,  1 class A { /** @var int */ public $prop; } //  B.php,   class B { public static function something() { $obj = new A; return $obj->prop; } } //  C.php,   $c = B::something(); // $c   int //  A.php,  2 class A { /** @var string <---   string */ public $prop; } //  C.php,   $c = B::something(); // $c   string,   B.php,  C.php   

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╣рдореЗрд╢рд╛ PHPDoc (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдРрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ) рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдмреА :: рдХреБрдЫ рдкреНрд░рдХрд╛рд░ () рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдПред рддрд╛рдХрд┐ рдЬрдм A.php рдлрд╝рд╛рдЗрд▓ рдмрджрд▓реЗ, C.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдЬрд╛рдирдХрд╛рд░реА рддреБрд░рдВрдд рдЕрдк рдЯреВ рдбреЗрдЯ рд╣реЛред

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

рдХрд╛рдо рдХреЗ рджреЛ рдЪрд░рдг: рдЕрдиреБрдХреНрд░рдордг рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


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

рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, рд▓рд┐рдВрдЯрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рджреЛ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ: рдкреНрд░рд╛рдердорд┐рдХ рдЕрдиреБрдХреНрд░рдордг рдФрд░ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдмрд╛рдж рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред рдЕрдм рдЗрди рджреЛ рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХред

рдЕрдиреБрдХреНрд░рдордг рдЪрд░рдг


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

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрдХреЛрд╢, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, * рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

* рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЗ рдореЛрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдиреБрдХреНрд░рдордг рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд░рдг


рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рд╣рдо рдореЗрдЯрд╛-рд╕реВрдЪрдирд╛ (рдлрд╝рдВрдХреНрд╢рдВрд╕, рдХреНрд▓рд╛рд╕реЗрд╕ ...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдб рдХрд╛ рд╕реАрдзреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЗрд╕ рдмрд╛рдд рдХреА рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдХрд┐ NoVerify рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдЬрд╛рдВрдЪ рд╕рдХрддрд╛ рд╣реИ:

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

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

рд▓рд┐рдВрдЯрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдирд┐рд░реАрдХреНрд╖рдг рд╕рд┐рд░реНрдл рдЕрдВрддрд┐рдо (рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░) рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдХреЛрдб рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛ рдПрдХ рдирдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ) рдФрд░ рдЗрд╕реЗ рдЪрд░ рдирд╛рдо рдореЗрдВ рд╕реАрд▓ рдХрд░рддреЗ рд╣реИрдВ: рдпрд╣ рдХреЛрдб PHP рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рддрд░реНрдХ рдореЗрдВ рдЧрд▓рдд рд╣реИред

рдХрд╛рдо рдХреА рдЧрддрд┐


рдЪреЗрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХрд┐рддрдирд╛ рд╕рдордп рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╣ рд╕рдм рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред NoVerify рдХреЗ рд╕рд╛рде, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рддрдХ рдХрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рддрдм рдерд╛ рдЬрдм рдореИрдВрдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ 1400 рдлрд╛рдЗрд▓реЗрдВ рдмрджрд▓реА рдереАрдВ), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреБрдЫ рд╕рдВрдкрд╛рджрди рд╣реЛрддреЗ рдереЗ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рд╕рднреА рдЪреЗрдХ 4-5 рд╕реЗрдХрдВрдб рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реИ, рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдирдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рднреАред рд╣рдо PHP рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдХреНрд╖рдо рдереЗ, рдЬреЛ рд╣рдорд╛рд░реЗ рдмрдбрд╝реЗ рдХреЛрдб рдмреЗрд╕ рдХреЗ рд╕рд╛рде рднреА рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИ?


рдЪреВрдВрдХрд┐ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЧреЛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП PHP рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП github.com/JetBrains/phpstorm-stubs рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХрд╛рдо рдХреА рдПрдХ рдЙрдЪреНрдЪ рдЧрддрд┐ рдорд┐рд▓реА (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 1 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдирд╛, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 100 рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг) рдФрд░ рд▓рд╛рдЗрдирд░ рдХреЗ рд╕рд╛рде рдЪреЗрдХ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ рдЬреЛ рдЧрд┐рдЯ рдкреБрд╢ рд╣реБрдХ рдореЗрдВ рдкрд╣рд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ред

рдирдП рдирд┐рд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрдзрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ PHPStorm рдХреЗ рдирд┐рдХрдЯ рдХреЛрдб рд╕рдордЭ рдХрд╛ рд╕реНрддрд░ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдмреЙрдХреНрд╕ рд╕реЗ рдЕрд▓рдЧ рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдирдП рдХреЛрдб рдореЗрдВ рдирдП рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдзреАрд░реЗ-рдзреАрд░реЗ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

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

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

рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд


GitHub рдкрд░ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░ рдЙрдкрд▓рдмреНрдз NoVerify

рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!

UPD: рдореИрдВрдиреЗ рдПрдХ рдбреЗрдореЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬреЛ WebAssembly рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕ рдбреЗрдореЛ рдХреА рдПрдХрдорд╛рддреНрд░ рд╕реАрдорд╛ phststorm-stubs рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдХрдореА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдВрдЯрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╢рдкрде рд▓реЗрдВрдЧреЗред

рдпреВрд░реА рдирд╕реЗрд░реЗрддрд┐рдиреЛрд╡, VKontakte рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рд╡рд┐рднрд╛рдЧ рдХреЗ рдбреЗрд╡рд▓рдкрд░

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


All Articles