NoVerify: рдПрдХ PHP рд▓рд┐рдВрдЯрд░ рдЬреЛ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

PHP рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╣реИрдВ: PHPStan, Psalm, Phan, Exakatред рд▓рд┐рдВрдЯрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА PHP (рдпрд╛ рдЬрд╛рд╡рд╛) рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧ рдпрд╛ рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд╛рдЦреЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рд╣реИред рдПрдХ рдзреАрдорд╛ рд▓рд┐рдЯрд░ рд╕реАрдЖрдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдпрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рд▓рд╛рдЦреЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдЗрдЯ VKontakte рд╣реИред рд╡рд┐рдХрд╛рд╕ рдФрд░ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдмрдЧ, рд╕рдореАрдХреНрд╖рд╛ - рдпрд╣ рд╕рдм рдЬрд▓реНрджреА рд╕реЗ, рдХрдард┐рди рд╕рдордп рд╕реАрдорд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЕрдЪреНрдЫрд╛ рдФрд░ рддреЗрдЬ рд▓рд┐рдВрдЯрд░ рдЬреЛ 5-10 рд╕реЗрдХрдВрдб рдореЗрдВ 5 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЖрдзрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдЕрдкреВрд░рдгреАрдп рдЪреАрдЬ рд╣реИред 

рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд▓рд┐рдВрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпреВрд░реА рдирд╕реЗрд░реЗрддрд┐рдиреЛрд╡ (рдЖрдкрдиреЗ рдзрдорд╛рд▓ рдордЪрд╛рдпрд╛) рд╕реЗ VKontakte рдиреЗ рд╡рд┐рдХрд╛рд╕ рдЯреАрдореЛрдВ рдХреЛ рдЕрдкрдиреА рдорджрдж рд▓рд┐рдЦреА - NoVerifyред рдпрд╣ PHP рдХреЗ рд▓рд┐рдП рдПрдХ linter рд╣реИ, рдЬрд┐рд╕реЗ Go рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрдкрдиреЗ рд╕рдордХрдХреНрд╖реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10-30 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреБрдЫ рдРрд╕рд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ PhpStorm рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЖрд╕рд╛рдиреА рд╕реЗ рдлреИрд▓рддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред рдЗрд╕реНрдХреЗрдВрдбрд░ рд╢рд╛рд░рд┐рдкреЛрд╡

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


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

рдзреНрдпрд╛рди рджреЗрдВред рдкреГрд╖реНрдарднреВрдорд┐ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдпреВрд░реА Nasretdinov, рдкрд░ NoVerify рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ Habr├й, рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдХреБрдЫ рдореМрдЬреВрджрд╛ linters, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреЗ рд╕рд╛рдеред PHP рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд╕рднреА рдХрдерди (рдпреВрд░реА рдФрд░ рдпрд╣рд╛рдБ рд▓реЗрдЦ рдореЗрдВ) рдПрдХ рдордЬрд╛рдХ рд╣реИред рдЗрд╕реНрдХрдВрджрд░ рдХреЛ PHP рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ, рд╣рд░ рдХреЛрдИ PHP рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╛рд╕


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

рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВ ред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдХрд╛рд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ ред рдпрд╣ рд╣рдо рднреА рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рднрд╛рд╡ рдХрдо рд╕реЗ рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрд╕рдлрд▓рддрд╛ рдХреЗ рдЕрдзрд┐рдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛рдПрдБ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдХ рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВрдФрд░ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЦрд░рд╛рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИ: рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░реА рдЯреАрдо рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЕрд▓рдЧ рд╣реИрдВред

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

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреА рдХрдареЛрд░рддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЧреИрд░-рдХрд╛рд░реНрдпрд╢реАрд▓ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рди рдЖрдП - рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рд▓рд┐рдВрдЯрд░реНрд╕ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ - рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд┐рд╕рд┐рд╕рд░реНрд╕ред рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ

рд▓рд┐рдВрдЯрд░ рдЪреБрдиреЗрдВ


рдЖрдЗрдП рдПрдХ рд▓рд╛рдЗрдирд░ рдЪреБрдиреЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддреЗ рд╣реИрдВ - рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рд▓рд┐рдВрдЯрд░ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред рд╣рдорд╛рд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реИрдВ: рд▓рд┐рдВрдЯрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рд╡рд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

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

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

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

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ Go рдкрд░ рдЕрдкрдирд╛ NoVerify PHP linter рд▓рд┐рдЦрд╛ред рдЙрд╕ рдкрд░ рдХреНрдпреЛрдВ? рд╕реНрдкреЙрдпрд▓рд░: рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдЬреБрд░рд╛ рдиреЗ рдРрд╕рд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

Noverify


рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рдмреАрдЪ рдЧреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордЭреМрддрд╛ рд╣реИред
"рдЗрдиреНрдлреЛрдЧреНрд░рд╛рдлрд┐рдХреНрд╕" рдХреЗ рд╕рд╛рде рддрд╕реНрд╡реАрд░ рдореЗрдВ рдкрд╣рд▓рд╛ "рд╕рдмреВрдд": рдЕрдЪреНрдЫрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЧрддрд┐, рдЖрд╕рд╛рди рд╕рдорд░реНрдердиред рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдореЗрдВ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рджреЛ рдмрд┐рдВрджреБ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред


рдЖрдВрдХрдбрд╝реЗ рд╕рд┐рд░ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ, рд╡реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред

рджреВрд╕рд░реЗ "рд╕рдмреВрдд" рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдФрд░ рдЕрдзрд┐рдХ рддрд░реНрдХ рджрд┐рдпрд╛ред


PHP рдзреАрдореА рд╣реИ, рдЧреЛ рддреЗрдЬрд╝ рд╣реИ, рдЗрддреНрдпрд╛рджрд┐ред 

рд╣рдордиреЗ рддреАрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЧреЛ рдХреЛ рдЪреБрдирд╛ред

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

рдЧреЛ рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡реА рд╣реИ ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рднреА рдХрдИ рдЧрд▓рддрд┐рдпрд╛рдВ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЧреЛ рдореЗрдВ рдЕрдЪреНрдЫреА рдЯреНрдпреВрдирд┐рдВрдЧ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓рд┐рдВрдЯрд░ рд╣реИрдВред рдЧреЛ рдореЗрдВ, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд╕рдд рдХреЛрдб рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрд░ рдХреЛ рд╢реВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╣реБрдд рдХрдо рддрд░реАрдХреЗ рд╣реИрдВред

рдЧреЛ рдРрдкреНрд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИредрдЧреЛ рдПрдХ рдХрд╛рдлреА рдкрд░рд┐рдкрдХреНрд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рднреА рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рд╣рдо рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде NoVerify рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред

  • NoVerify рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ ред

  • рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди , рджреЛрдиреЛрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдФрд░ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рдЗрди рдЪреЗрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВред
  • рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиред рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдирдХ рдЧреЛ рд╡рд┐рддрд░рдг рдореЗрдВ рд░реВрдкрд░реЗрдЦрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдХ рдврд╛рдВрдЪрд╛ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рдкреБрдгрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦрд┐рдд рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╣реИред

рдПрдХреАрдХрд░рдг рдХрд╛ рд╕рдордЭреМрддрд╛


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



рдУрд╣ рдореЗрд░реЗ рдХреЛрдб! рдЗрддрдиреА рдЧрд▓рддрд┐рдпрд╛рдВ рдХрднреА рдХреЛрдИ рдирд╣реАрдВ рд╕реБрдзрд╛рд░реЗрдЧрд╛ред рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓рд┐рдВрдЯрд░ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдХрднреА рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░реЗрдВ?

рдПрдХреАрдХреГрдд


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

рдЕрдкрд╡рд╛рджреЛрдВ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд (рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ) рдХреЛ рдЬреЛрдбрд╝реЗрдВ ред рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдЫреВрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рджреЛрд╖ рдХреЗ рд╕рд╛рде рднреА рдЫреЛрдбрд╝рдирд╛ рд╣реИ, рддрд╛рдХрд┐ рдЦреБрдж рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рди рдХрд░реЗрдВ рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдПрдХ рдирд┐рд╢рд╛рди рди рдЫреЛрдбрд╝реЗрдВред

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

рд╣рдо рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛ рддреЛ рдЙрд╕реЗ рдХреИрд╕реЗ рд╕рдордЭреЗрдВ? рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рд╕реЗ рдкреВрдЫреЗрдВред рдЬреИрд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдЦреБрд╢реА рд╣реЛрддреА рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ рд╣реИрдВ рдФрд░ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдХреБрдЫ рдФрд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВ - рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдЧрд┐рдЯ рд╕реЗрдЯрдЕрдк


рдбрд┐рдл рдореЛрдб рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╣реИ - рдЧрд┐рдЯред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ SVN рд╣реИ, рддреЛ рдирд┐рд░реНрджреЗрд╢ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, Git рдкрд░ рдЬрд╛рдПрдВред

рд╣рдо рд▓рд┐рдВрдЯрд░ рдХреЗ рд╕рд╛рде рдкреНрд░реА-рдкреБрд╢ рд╣реБрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ ред рд╣рдо рд▓рд╛рдЗрдирд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ ред рд╕рдВрднрд╡рддрдГ рдкреВрд░реНрд╡-рдкреНрд░рд╛рдкреНрдд рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд▓рд┐рдВрдЯрд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╡реАрдХреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдПрдХ рдкреНрд░реА-рдкреБрд╢ рд╣реБрдХ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ рднреА NoVerify рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреБрд╢ рдХреЗ рдмрд╛рдж, CI рдЪреЗрдХ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред NoVerify рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ред CI рдкрд░, рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдЪрд▓рд╛рддреЗ рд╣реИрдВ--no-verify

--git-full-diff- CI рдореЗрдВ рдорд╢реАрдиреЛрдВ рдХреЛ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИрдВред рд╕реНрдерд╛рдиреАрдп рдорд╢реАрдиреЛрдВ рдкрд░, рд╣рдо рдХрдо рд╕рдЦреНрдд, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ (5-15 рд╕реЗрдХрдВрдб рддреЗрдЬреА рд╕реЗ) рдХрд╛ рддреЗрдЬреА рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 

рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ




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

function get_foo($obj) {
    return $obj->foo;
    ^^^
}

Warning:
Property "foo" does not exist

рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВред 
рд▓рд┐рдВрдЯрд░ рдХреЛ рддреНрдпрд╛рдЧрдиреЗ рдХрд╛ рдпрд╣ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИред рд▓реЛрдЧ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реИрдВ рдЬреЛ рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдо рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред

рдЬрдм рд╡реЗ рдХреБрдЫ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЕрдХреНрд╕рд░ рдЪрд╛рд░реЛрдВ рдУрд░ рдзрдХреЗрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рдХрдИ рдХреЗ рдкрд╛рд╕ рд▓рд┐рдВрдЯрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрдВрддреНрд░ рд╣реИ - рд▓рд┐рдВрдЯрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░реЗ рджреЗрд╢ рдореЗрдВ, рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ no-verifyрдкреНрд░реА-рдкреБрд╢ рд╣реБрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ ред рд╣рдо рдЕрдХреНрд╕рд░ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рдереЗ рдФрд░ рд▓рд┐рдВрдЯрд░ рдХреЗ рдирд╛рдо рдкрд░ рдЗрд╕реЗ рдЕрдорд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

Pickiness


рдПрдХ рдФрд░ рд▓рд┐рдВрдЯрд░ рдкреНрд░реЙрдкрд░реНрдЯреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рд▓реЛрдЧ рдЙрдкрдирд╛рдо рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред PHP рдореЗрдВ, sizeofрдпрд╣ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ count: рдпрд╣ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╕реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдХрд╛ рдПрдХ sizeofрдЕрд▓рдЧ рдЕрд░реНрде рд╣реИред рдпрджрд┐ рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рд╣реИ sizeof, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдорддрд▓рдм рд╣реИ countред рд▓реЗрдХрд┐рди рдпрд╣ рдирд╛рдЗрдЯрдкреИрдХрд┐рдВрдЧ рд╣реИред

$len = sizeof($x);
    ^^^^^^

Warning:
use "count" instead of "sizeof"

рдЙрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░реЗрдВ?


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

рдлрд┐рдХреНрд╕рд┐рдВрдЧ sizeofрдкрд░ рдЯрд┐рдкреНрдкрдгреА рдЬреИрд╕реЗ рдкреБрд╢ / рдХрдореЗрдВрдЯ рдХреЛ рдмреНрд▓реЙрдХ рди рдХрд░реЗрдВ countред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд╛рдЗрдЯ-рдкрд┐рдХрд┐рдВрдЧ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддрдм 99% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЯреАрдо рджреНрд╡рд╛рд░рд╛) рдФрд░ рдХреЛрдб рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдВрдЧреЗ sizeofред

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

рдорд╣реАрдиреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдРрд╕реЗ рдЪреЗрдХ рдЪрд▓рд╛рдПрдВ, рд╕рдмрдмреЙрдЯрдирд┐рдХ рдкрд░ ред рдЪреЗрдХ рдХреЛ рд╣рд░ рдмрд╛рд░ рд╕реАрдЖрдИ рдпрд╛ рдкреНрд░реА-рдкреБрд╢ рд╣реБрдХ рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдорд╣реАрдиреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд░реВрдЯреАрди рдХреНрд░реЛрди рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдорд┐рд▓рддрд╛ рд╣реИ рдЙрд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдХрд╛рдо рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреБрдЫ рдордд рдХрд░реЛред рд╢реИрд▓реАрдЧрдд рдЬрд╛рдБрдЪ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рднреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рд╕рдордЭреМрддрд╛




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

NoVerify рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг


рдирд┐рдЬреА рдЪреЗрдХ VKontakteред Noverify рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред GitHub рдореЗрдВ, NoVerify рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд▓рд╛рдЗрдирд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреЗрдХ, vklints ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд▓рд┐рдВрдЯрд░ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдЪреЗрдХ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ: рдЖрдк рдЧреЛ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЦреБрдж рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред NoVerify рдмрд╛рдЗрдирд░реА рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлреНрд░реЗрдо рдЪреЗрдХ рдХреЗ рд╕рднреА рдкрдВрдЬреАрдХреГрдд рд╕реЗрдЯреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред 



NoVerify рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдмрд╛рдЗрдирд░реА (рд▓рд┐рдВрдЯрд░) рджреЛрдиреЛрдВ рд╣реИред

рд╣рдорд╛рд░реЗ рдЪреЗрдХ рдХреЛ vklints рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд╡реЗ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ PhpStorm рдФрд░ Open Source NoVerify - рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред

Vklints рдХреНрдпрд╛ рд╣реИ?

рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ , рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рддреБрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЪреЗрдХ рд╣реИ рдЬрд┐рд╕рдХреА рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рддрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИ ===ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдЦреНрдд рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреНрд╡рдЬ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

рдбрд╛рдпрдирд╛рдорд┐рдХ рдирд┐рдпрдо PHP рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдПрдХ рд╕рд░рд▓ NoVerify рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддрдВрддреНрд░ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: рдЧреЛ рдХреЛрдб рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ NoVerify рдореЗрдВ рдЪреЗрдХ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ ред

рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


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

рдЗрд╕ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╣ рдХреЗрд╡рд▓ UTF-8 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ UTF-8 рдореЗрдВ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ UTF-8 рдХреЗ рдмреАрдЪ ред UTF-8 рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдВрдбреЛрдЬрд╝ -1251 рдЕрдХреНрд╕рд░ рд░реВрд╕реА PHP рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднреА рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдкрд╣рдЪрд╛рдиреЗрдВрдЧреЗ? 

рдлрд╝рд╛рдЗрд▓ encodings.xmlрдЙрди рд╕рднреА рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреА рд╣реИ рдЬрд╣рд╛рдБ UTF-8 рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЗрди рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлреНрд▓рд╛рдИ рдкрд░ рд╣рдо рд╕реНрдЯреНрд░реАрдо рд╕реНрдЯреНрд░реАрдо рджреНрд╡рд╛рд░рд╛ UTF-8 рд╕реНрдЯреНрд░реАрдо рдХрд░рддреЗ рд╣реИрдВ (рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛)ред


рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдХреБрдЫ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреВрд░рд╛ рд╣реБрдЖред рдкрд╣рд▓реЗ рдкрд░ - рд╣рдо рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ phpstorm- рд╕реНрдЯрдмреНрд╕ рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ ред рдпрд╣ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реИ рдЬреЛ PHP рдХреЛрдб рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред PhpStorm рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рд▓рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдУрд╡рд░рд░рд╛рдЗрдб рдирд┐рд░реНрджреЗрд╢ рд╣реИ ... рдпрд╣ рд╣рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ T[]рд╣реИрдВ рдФрд░ рдкреНрд░рдХрд╛рд░ (рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА array_pop) рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ ред


Phststorm- рд╕реНрдЯрдмреНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА - рдиреАрдВрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдиреАрдВрд╡ рд▓рд┐рдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╢реЛрд╖рд┐рдд рд╣реЛрддреА рд╣реИ рдФрд░ рд╣рдо рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рдЕрд╡рд╢реЛрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрддрдорд╛рди рдорд╛рд╕реНрдЯрд░ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ ред рд╣рдо рджреЛ рдореЛрдб рдореЗрдВ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:

  • рд╕реНрдерд╛рдиреАрдп рдкрд░рд┐рд╡рд░реНрддрди : рдЖрдзрд╛рд░ рд░реЗрдЦрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рдХреЛрдб рдореЗрдВ рдирдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ;
  • рд╣рдо рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ : рдкрд╣рд▓рд╛ рдФрд░ рдЕрдВрддрд┐рдо рд╕рдВрд╢реЛрдзрди, рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╕рдм рдХреБрдЫ рд╕рдорд╛рд╡реЗрд╢реА рд╣реИ - рдпрд╣ рдирдпрд╛ рдХреЛрдб рд╣реИ, рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ "рдкрд╣рд▓реЗ" рдкреБрд░рд╛рдирд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд░рдг рдЖрддрд╛ рд╣реИред



рдПрдПрд╕рдЯреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг ред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╣реИ, рдЯрд╛рдЗрдк рдЬрд╛рдирдХрд╛рд░реАред рд╣рдо рд╕рднреА PHP-source, parsim рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ AST рд╕реЗ рдКрдкрд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИред рдХрдЪреНрдЪреЗ рдПрдПрд╕рдЯреА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред 



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

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



рдбрдмрд▓ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдЕрд▓рдЧ рдореЛрдб рдореЗрдВ) рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдмрд░реНрджрд╛рд╢реНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - NoVerify рдЕрднреА рднреА рдЕрдиреНрдп PHP рд▓рд┐рдВрдХрд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджрд░реНрдЬрдиреЛрдВ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред рдЗрд╕реА рд╕рдордп, рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддреНрд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ, рдХрдо рд╕реЗ рдХрдо 30 рдкреНрд░рддрд┐рд╢рддред

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



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

рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди


рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдпрд╣рд╛рдВ рдЖрддреА рд╣реИрдВред рдпрд╣ рдЕрднреА рднреА PHP рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдореЙрдбрд▓ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред


рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдореЙрдбрд▓ (рдбреЗрдореЛ)ред

рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░:

  • рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
  • рд╡рд╛рд╕реНрддрд╡рд┐рдХ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ intрдпрд╛ float(рдпрджрд┐ рдпрд╣ рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рд╣реИ) рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред 

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ "рдордЬрдмреВрдд" рд▓рдЧрддреЗ рд╣реИрдВ - рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ, рд╕рдЪреНрдЪреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рд╣рдо рдХреЗрд╡рд▓ рдПрдиреЛрдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рднреА рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдорд╛рди, рдЕрднрд┐рдХрдерди, рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдФрд░ рдкреНрд░рдХрд╛рд░ рд╕рдВрдХреЗрдд, рдЬреЛ PHP 7 рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рд╕рдВрдХреЗрдд рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдирд╛рдо рдЕрдкреЗрдХреНрд╖рд┐рдд


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдХреЗ Fooрдкрд╛рд╕ рдПрдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИред рд╡рдВрд╢рдЬ рд╡рд░реНрдЧ рд╕реЗ, рд╣рдо рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлреВ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рдВрд╢рдЬ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╡рд╛рд░рд┐рд╕ рдорд┐рд▓ Fooрд╕реЗ new static()рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ (рд╕реЗ рдХреА рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде self), рддреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдИрдбреАрдИ рдЖрдкрдХреЛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрдЧрд╛ - рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ static()ред рдпрд╣ PHP рдореЗрдВ рдПрдХ рджреЗрд░ рд╕реЗ рд╕реНрдереИрддрд┐рдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реИ , рдЬрдм FooрдХреНрд▓рд╛рд╕ рдЗрдирд╣реЗрд░рд┐рдЯрд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ ред 

class Foo {
    /** @return static */
    public function newStatic() : self {
        return new static();
    }
}
// actual = Foo
// expected = static

рдЬрдм рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ new static(), рддреЛ рди рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреА рд╣реИ new Fooред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА Fooрд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ bar, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ new barред рддрджрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдПред рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд┐рд░рд░реНрдердХ рдирд╣реАрдВ рд╣реИ - рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ self- PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдЖрдИрдбреАрдИ рдХреЗ рд▓рд┐рдП рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ staticред рдпрджрд┐ рд╣рдо рд╡рд╛рд░рд┐рд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рд╕реЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рди рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдЕрдзрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред

class Foo {
    /** @return static */
    public function newStatic() : self {
        return new static();
    }
}
// actual -  PHP 
// expected -   IDE/

рд╕рдВрдХреЗрдд рд▓рд┐рдЦреЗрдВ


рд╕реНрдЯреЗрдЯрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдФрд░ рдЯрд╛рдЗрдк рд╣рд┐рдВрдЯ рдПрдХ рд╣реА рдЪреАрдЬ рдирд╣реАрдВ рд╣реИред
рдЖрдкрдиреЗ рд╕реБрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реАрдорд╛рдУрдВ рдкрд░ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реАрдорд╛рдУрдВ рдкрд░, рд╣рдо рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЗрдирдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рддрд░реНрдХ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдЖрдк рдХреЛрдИ рднреА рдмрдХрд╡рд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ fooрдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ int, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ Tред рдЖрдк рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди PHP рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ ред 

declare(strict_types=1);
    function f(T $foo) {
        $foo = 10; //  int
        return $foo;
}

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ - рд╣рдо рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ foo? рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдордиреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ fooрдпрд╣ рдерд╛ T, рдФрд░ рд╡рд╛рдкрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред 

declare(strict_types=1);
function f(T $foo) {
    $foo = 10; //  int
    return $foo;
}
// ? 1. f -> int
// ? 2. f -> T|int
// ? 3. f -> T

рдХреМрди рд╕рд╛ рдкреНрд░рдХрд╛рд░ рд╕рд╣реА рд╣реИ? рдкрд╣рд▓реЗ рджреЛ, рд╣рдо рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред PhpStorm рдФрд░ рд▓рд┐рдВрдЯрд░ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рд▓реМрдЯрддрд╛ рд╣реИ int, рдкреНрд░рдХрд╛рд░ рдШрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ T|int- рдкреНрд░рдХрд╛рд░ рдХреЗ "рд╕рдВрдШ"ред рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рдЗрди рджреЛрдиреЛрдВ рдорд╛рдиреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЯрд╛рдЗрдк T рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдереА, рдлрд┐рд░ рд╣рдордиреЗ рдЗрд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ 10, рдЗрд╕рд▓рд┐рдП fooрдЗрди рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдиреЛрдЯреЗрд╢рди


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

/** @return int */
function f() { return "I lied!"; }

рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ред рдпрд╣рд╛рдВ, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рд╡рд┐рдзрд┐ рдореЗрдВ рдЕрдЪреНрдЫреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рдкреНрд░рд▓реЗрдЦрди, рдкреНрд░рдХрд╛рд░ рд╣реИрдВ - рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рд╣реИ: рдХреЗрд╡рд▓ @inheritdocрдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

interface IFoo {
    /** @return int */
    public function foo();
}
class Fooer implements IFoo {
    /** @inheritdoc */
    public function foo() { return "10"; }
}

рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ int, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ: PHP рд╕рднреА рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднрд┐рд╕рд░рдг рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

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

interface IFoo {
    /** @return int */
    public function foo();
}
class Fooer implements IFoo {
    /** @return string */
    public function foo() { return "10"; }
}

рдЕрдЧрд░ рд▓реЛрдЧреЛрдВ рдиреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд▓рд┐рдЦреАрдВ рддреЛ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрдЧреА @inheritdocред PhStStorm рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрджрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред

рдЬрдм рд╣рдо рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рдкреНрд░рдХрд╛рд░) рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ PhStStorm рдФрд░ рд▓рд╛рдЗрдирд░ рдореЗрдВ рдЕрд╕рдорд╛рди рдХреАрдбрд╝реЗ рдХреЗ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо JetBrains рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ phpstorm-stubs рдореЗрдВ рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХреЛ рдареАрдХ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ IDE рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯрд╛ рдХрд╛рдВрдЯрд╛ рд╣реИ -  VKCOM / phpstorm-stubs ред рдПрдХ рдЬреЛрдбрд╝реА рдкреИрдЪ рдХреЛ рдХреБрдЫ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ PhpStorm рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рд▓рд┐рдВрдЯрд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

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


Noverify рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред рдпрд╣ GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рд░реНрджреЗрд╢ "рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖред"

рдЕрдЧрд░ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЧрд▓рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ NoVerify рдХреЛ рдирд╛рд░рд╛рдЬ рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: рдЧрд┐рдЯрд╣рдм рдкрд░ рдЯрд┐рдХрдЯ рдЬрд╛рд░реА рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕реЗ 1-2 рджрд┐рдиреЛрдВ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдпрджрд┐ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдЪреИрдЯ рд░реВрдо рдореЗрдВ рдЬрд╛рдПрдВ - noverify -linter ред

PHP-, , , , PHP Russia.

, . , , . telegram- @PHPRussiaConfChannel. , .

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


All Articles