PHP рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ PHPStan 1.0 рдХрд╛ рд╡рд┐рдореЛрдЪрди

рдЫрд╣ рд╕рд╛рд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рдж, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ PHPStan 1.0 рдХреА рдкрд╣рд▓реА рд╕реНрдерд┐рд░ рд░рд┐рд▓реАрдЬ рд╣реБрдИ, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ PHP рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдвреВрдВрдврдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ MIT рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬрд╛рдБрдЪ рдХреЗ 10 рд╕реНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдЧрд▓рд╛ рд╕реНрддрд░ рдкрд┐рдЫрд▓реЗ рд╕реНрддрд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдХрдареЛрд░ рдЬрд╛рдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдВрдЪ, рдЕрдЬреНрдЮрд╛рдд рд╡рд░реНрдЧреЛрдВ, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ ($рдпрд╣), рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░, рдФрд░ рддрд░реНрдХреЛрдВ рдХреА рдЧрд▓рдд рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ред
  • __call рдФрд░ __get рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡рддрдГ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░, рдЕрдЬреНрдЮрд╛рдд рдЬрд╛рджреБрдИ рддрд░реАрдХреЛрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ред
  • рд╕рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛, $this рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред PHPDocs рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
  • рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдФрд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ред
  • "рдореГрдд" (рдХрднреА рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛) рдХреЛрдб рдХреА рдореВрд▓ рдкрд╣рдЪрд╛рдиред рдРрд╕реЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕рдСрдлрд╝ рдХреЙрд▓ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рджреЗрддреЗ рд╣реИрдВ, "рдЕрдиреНрдпрдерд╛" рдмреНрд▓реЙрдХ рдЬреЛ рдХрднреА рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд░рд┐рдЯрд░реНрди рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВред
  • рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ред
  • рдЧреБрдо рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреАред
  • рдЧрд▓рдд рдпреВрдирд┐рдпрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдЬреЛ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  • рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ "рд╢реВрдиреНрдп" рдкреНрд░рдХрд╛рд░реЛрдВ рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреАред
  • "рдорд┐рд╢реНрд░рд┐рдд" рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ред

    рдкрд╣рдЪрд╛рдиреА рдЧрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:

    • рдЙрджрд╛рд╣рд░рдг, рдХреИрдЪ, рдЯрд╛рдЗрдкрд╣рд┐рдВрдЯ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ред
    • рдмреБрд▓рд╛рдП рдЧрдП рддрд░реАрдХреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛, рд╕рд╛рде рд╣реА рдкрд╛рд░рд┐рдд рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
    • рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдХрд┐ рд╡рд┐рдзрд┐ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд░рд┐рдЯрд░реНрди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
    • рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛ рд░рд╣реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдФрд░ рджреГрд╢реНрдпрддрд╛, рдФрд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдШреЛрд╖рд┐рдд рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред
    • рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЯрдлрд╝/рдкреНрд░рд┐рдВрдЯрдлрд╝ рдХреЙрд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рд╣реА рд╣реИред
    • рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░реЛрдВ рдФрд░ рд▓реВрдкреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЪрд░ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ред
    • рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдФрд░ рдСрдкрд░реЗрдВрдб рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдкрд░ рдмреЗрдХрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд╕реНрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "(рд╕реНрдЯреНрд░рд┐рдВрдЧ) 'рдлреВ'") рдФрд░ рд╕рдЦреНрдд рдкрд░реАрдХреНрд╖рдг ("===" рдФрд░ "!==") рдЬреЛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рджреЗрддреЗ рд╣реИрдВред

    PHPStan 1.0 рдореЗрдВ рдкреНрд░рдореБрдЦ рдирд╡рд╛рдЪрд╛рд░:

    • "9" рдЪреЗрдХ рд╕реНрддрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ "рдорд┐рд╢реНрд░рд┐рдд" рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕реНрд╡рд╛рдЧрдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реИред рд▓реЗрд╡рд▓ XNUMX "рдорд┐рд╢реНрд░рд┐рдд" рдХреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ "рдорд┐рд╢реНрд░рд┐рдд" рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛, "рдорд┐рд╢реНрд░рд┐рдд" рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛, рдФрд░ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
    • @phpstan-pure рдФрд░ @phpstan-impure рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯрд░реНрди рдорд╛рди рд╕рдорд╛рди рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
    • @throws рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░рд╛рдЗ-рдХреИрдЪ-рдлрд╝рд╛рдЗрдирд▓реА рдирд┐рд░реНрдорд╛рдгреЛрдВ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЯрд╛рдЗрдк рдХрд░реЗрдВред
    • рдкрд░рд┐рднрд╛рд╖рд┐рдд рд▓реЗрдХрд┐рди рдЕрдкреНрд░рдпреБрдХреНрдд рдЖрдВрддрд░рд┐рдХ (рдирд┐рдЬреА) рдЧреБрдгреЛрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдкрд╣рдЪрд╛рдиред
    • array_map рдФрд░ usort рдЬреИрд╕реЗ рд╕рд░рдгреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЕрд╕рдВрдЧрдд рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░рдирд╛ред
    • рдЧреБрдо рдЯрд╛рдЗрдкрд╣рд┐рдВрдЯ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдирд┐рд░реАрдХреНрд╖рдгред
    • рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ PHPDocs рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ PHPDocs рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред

    рд╕реНрд░реЛрдд: opennet.ru

  • рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ