แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ PHPStan 1.0 แžŠแŸ‚แž›แž‡แžถแžขแŸ’แž“แž€แžœแžทแž—แžถแž‚แž‹แžทแžแžทแžœแž“แŸ’แžแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžผแžŠ PHP

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแžšแž™แŸˆแž–แŸแž›แž”แŸ’แžšแžถแŸ†แž˜แžฝแž™แž†แŸ’แž“แžถแŸ†แž“แŸƒแž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸ แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžŸแŸ’แžแŸแžšแž—แžถแž–แžŠแŸ†แž”แžผแž„แž“แŸƒแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžœแžทแž—แžถแž‚แž‹แžทแžแžทแžœแž“แŸ’แž PHPStan 1.0 แž”แžถแž“แž€แžพแžแžกแžพแž„แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แžŸแŸ’แžœแŸ‚แž„แžšแž€แž€แŸ†แž แžปแžŸแž“แŸ…แž€แŸ’แž“แžปแž„แž€แžผแžŠ PHP แžŠแŸ„แž™แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแžœแžถ แž“แžทแž„แž”แŸ’แžšแžพแž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแžฏแž€แžแžถแŸ” แž€แžผแžŠแž‚แž˜แŸ’แžšแŸ„แž„แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแžšแžŸแŸแžšแž‡แžถ PHP แž“แžทแž„แž…แŸ‚แž€แž…แžถแž™แž€แŸ’แžšแŸ„แž˜แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ MIT แŸ”

แžงแž”แž€แžšแžŽแŸแžœแžทแž—แžถแž‚แž•แŸ’แžแž›แŸ‹แž“แžผแžœแž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แž…แŸ†แž“แžฝแž“ 10 แžŠแŸ‚แž›แž€แŸ’แž“แžปแž„แž“แŸ„แŸ‡แž€แž˜แŸ’แžšแžทแžแž”แž“แŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹แž“แžธแž˜แžฝแž™แŸ—แž–แž„แŸ’แžšแžธแž€แžŸแž˜แžแŸ’แžแž—แžถแž–แž“แŸƒแž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แž˜แžปแž“ แž“แžทแž„แž•แŸ’แžแž›แŸ‹แž“แžผแžœแž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แžแžนแž„แžšแŸ‰แžนแž„แž‡แžถแž„แž˜แžปแž“แŸ–

  • แž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แž‡แžถแž˜แžผแž›แžŠแŸ’แž‹แžถแž“ แž€แŸ†แžŽแžแŸ‹แžแŸ’แž“แžถแž€แŸ‹แž˜แžทแž“แžŸแŸ’แž‚แžถแž›แŸ‹ แž˜แžปแžแž„แžถแžš แž“แžทแž„แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžš ($this) แžขแžแŸแžšแžŠแŸ‚แž›แž˜แžทแž“แž”แžถแž“แž€แŸ†แžŽแžแŸ‹ แž“แžทแž„แž†แŸ’แž›แž„แž€แžถแžแŸ‹แž…แŸ†แž“แžฝแž“แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แžแžปแžŸแŸ”
  • แž€แŸ†แžŽแžแŸ‹แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽแžขแžแŸแžšแžŠแŸ‚แž›แž˜แžทแž“แž”แžถแž“แž€แŸ†แžŽแžแŸ‹ แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžšแžœแŸแž‘แž˜แž“แŸ’แžแž˜แžทแž“แžŸแŸ’แž‚แžถแž›แŸ‹ แž“แžทแž„แž›แž€แŸ’แžแžŽแŸˆแžŸแž˜แŸ’แž”แžแŸ’แžแžทแž“แŸƒแžแŸ’แž“แžถแž€แŸ‹แž‡แžถแž˜แžฝแž™ __call แž“แžทแž„ __get แŸ”
  • แž€แžถแžšแžšแž€แžƒแžพแž‰แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแž˜แžทแž“แžŸแŸ’แž‚แžถแž›แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แž€แž“แŸ’แžŸแŸ„แž˜แž‘แžถแŸ†แž„แžขแžŸแŸ‹ แž˜แžทแž“แž€แŸ†แžŽแžแŸ‹แž…แŸ†แž–แŸ„แŸ‡แž€แžถแžšแž แŸ…แž‘แžผแžšแžŸแž–แŸ’แž‘แžแžถแž˜แžšแž™แŸˆ $this แž‘แŸแŸ” แž€แŸ†แž–แžปแž„แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› PHPDocs แŸ”
  • แž–แžทแž“แžทแžแŸ’แž™แž”แŸ’แžšแž—แŸแž‘แžแŸ’แžšแžกแž”แŸ‹ แž“แžทแž„แž€แŸ†แžŽแžแŸ‹แž”แŸ’แžšแž—แŸแž‘แž‘แŸ…แž›แž€แŸ’แžแžŽแŸˆแžŸแž˜แŸ’แž”แžแŸ’แžแžทแŸ”
  • แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽแž‡แžถแž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž“แŸƒแž›แŸแžแž€แžผแžŠ "แžŸแŸ’แž›แžถแž”แŸ‹" (แž˜แžทแž“แžŠแŸ‚แž›แž แŸ…แžแžถ) แŸ” แž€แŸ†แžŽแžแŸ‹แžงแž‘แžถแž แžšแžŽแŸแž“แŸƒแž€แžถแžšแž แŸ…แž‘แžผแžšแžŸแž–แŸ’แž‘แžŠแŸ‚แž›แžแŸ‚แž„แžแŸ‚แžแŸ’แžšแžกแž”แŸ‹แž˜แžทแž“แž–แžทแž แž”แŸ’แž›แžปแž€ "แž•แŸ’แžŸแŸแž„แž‘แŸ€แž" แžŠแŸ‚แž›แž˜แžทแž“แž†แŸแŸ‡ แž“แžทแž„แž›แŸแžแž€แžผแžŠแž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž€แžถแžšแžแŸ’แžšแžกแž”แŸ‹แž˜แž€แžœแžทแž‰แŸ”
  • แž€แžถแžšแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž”แŸ’แžšแž—แŸแž‘แž“แŸƒแžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžผแž“แž‘แŸ…แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แž แž“แžทแž„แž˜แžปแžแž„แžถแžšแŸ”
  • แž€แžถแžšแž–แŸ’แžšแž˜แžถแž“แžขแŸ†แž–แžธแž€แžถแžšแž”แžถแžแŸ‹แž€แžถแžšแž–แž“แŸ’แž™แž›แŸ‹แžขแŸ†แž–แžธแž–แŸแžแŸŒแž˜แžถแž“แž”แŸ’แžšแž—แŸแž‘แŸ”
  • แž€แžถแžšแž–แŸ’แžšแž˜แžถแž“แžขแŸ†แž–แžธแž”แŸ’แžšแž—แŸแž‘แžŸแž แž‡แžธแž–แž˜แžทแž“แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœ แžŠแŸ‚แž›แž€แŸ†แžŽแžแŸ‹แž€แžถแžšแž”แŸ’แžšแž˜แžผแž›แž“แŸƒแž”แŸ’แžšแž—แŸแž‘แž–แžธแžš แžฌแž…แŸ’แžšแžพแž“แŸ”
  • แž€แžถแžšแž–แŸ’แžšแž˜แžถแž“แžขแŸ†แž–แžธแžœแžทแž’แžธแž แŸ…แž‘แžผแžšแžŸแž–แŸ’แž‘ แž“แžทแž„แž€แžถแžšแž…แžผแž›แž”แŸ’แžšแžพแž›แž€แŸ’แžแžŽแžŸแž˜แŸ’แž”แžแŸ’แžแžทแž‡แžถแž˜แžฝแž™แž”แŸ’แžšแž—แŸแž‘ "แž˜แžทแž“แžขแžถแž…แž‘แž‘แžฝแž›แž™แž€แž”แžถแž“"แŸ”
  • แž€แžถแžšแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž—แŸแž‘ "แž…แž˜แŸ’แžšแžปแŸ‡" แŸ”

    แžงแž‘แžถแž แžšแžŽแŸแž“แŸƒแž”แž‰แŸ’แž แžถแž˜แžผแž›แžŠแŸ’แž‹แžถแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž€แŸ†แžŽแžแŸ‹แŸ–

    • แžขแžแŸ’แžแžทแž—แžถแž–แž“แŸƒแžแŸ’แž“แžถแž€แŸ‹แžŠแŸ‚แž›แž”แŸ’แžšแžพแž€แŸ’แž“แžปแž„แžงแž‘แžถแž แžšแžŽแŸ แž…แžถแž”แŸ‹ แžœแžถแž™แžขแž€แŸ’แžŸแžš แž“แžทแž„แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž—แžถแžŸแžถแž•แŸ’แžŸแŸแž„แž‘แŸ€แžแŸ”
    • แžขแžแŸ’แžแžทแž—แžถแž– แž“แžทแž„แž›แž‘แŸ’แž’แž—แžถแž–แž“แŸƒแžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แž แž“แžทแž„แž˜แžปแžแž„แžถแžšแžŠแŸ‚แž›แž”แžถแž“แž แŸ… แž€แŸแžŠแžผแž…แž‡แžถแž…แŸ†แž“แžฝแž“แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แžŠแŸ‚แž›แž”แžถแž“แžขแž“แžปแž˜แŸแžแŸ”
    • แž–แžทแž“แžทแžแŸ’แž™โ€‹แž˜แžพแž›โ€‹แžแžถโ€‹แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžšโ€‹แžแŸ’แžšแžกแž”แŸ‹โ€‹แž‘แžทแž“แŸ’แž“แž“แŸแž™โ€‹แž‡แžถแž˜แžฝแž™โ€‹แž”แŸ’แžšแž—แŸแž‘โ€‹แžŠแžผแž…โ€‹แžŠแŸ‚แž›โ€‹แž”แžถแž“โ€‹แž€แŸ†แžŽแžแŸ‹โ€‹แž€แŸ’แž“แžปแž„โ€‹แž€แž“แŸ’แžŸแŸ„แž˜โ€‹แžแŸ’แžšแžกแž”แŸ‹แŸ”
    • แžขแžแŸ’แžแžทแž—แžถแž– แž“แžทแž„แž—แžถแž–แž˜แžพแž›แžƒแžพแž‰แž“แŸƒแž›แž€แŸ’แžแžŽแŸˆแžŸแž˜แŸ’แž”แžแŸ’แžแžทแžŠแŸ‚แž›แž€แŸ†แž–แžปแž„แž…แžผแž›แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ แž“แžทแž„แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž”แŸ’แžšแž—แŸแž‘แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŠแŸ‚แž›แž”แžถแž“แž”แŸ’แžšแž€แžถแžŸ แž“แžทแž„แž‡แžถแž€แŸ‹แžŸแŸ’แžแŸ‚แž„แžŠแŸ‚แž›แž”แŸ’แžšแžพแž€แŸ’แž“แžปแž„แž›แž€แŸ’แžแžŽแŸˆแžŸแž˜แŸ’แž”แžแŸ’แžแžทแŸ”
    • แž…แŸ†แž“แžฝแž“แž“แŸƒแž”แŸ‰แžถแžšแŸ‰แžถแž˜แŸ‰แŸ‚แžแŸ’แžšแžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžผแž“แž‘แŸ…แž€แžถแžšแž แŸ… sprintf/printf แž“แŸ…แž€แŸ’แž“แžปแž„แž”แŸ’แž›แžปแž€แž‘แž˜แŸ’แžšแž„แŸ‹แžแŸ’แžŸแŸ‚แžขแž€แŸ’แžŸแžšแž‚แžบแžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœแŸ”
    • แžขแžแŸ’แžแžทแž—แžถแž–แž“แŸƒแžขแžแŸแžšแžŠแŸ„แž™แž‚แžทแžแž‚แžผแžšแž–แžธแž”แŸ’แž›แžปแž€แžŠแŸ‚แž›แž”แž„แŸ’แž€แžพแžแžกแžพแž„แžŠแŸ„แž™แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžšแžŸแžถแžแžถ แž“แžทแž„แžšแž„แŸ’แžœแžทแž›แž‡แžปแŸ†แŸ”
    • แž€แžถแžšแžแžถแžŸแž”แŸ’แžšแž—แŸแž‘แž‚แŸ’แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ (แžง. "(แžแŸ’แžŸแŸ‚แžขแž€แŸ’แžŸแžš) 'foo'") แž“แžทแž„แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแž™แŸ‰แžถแž„แžแžนแž„แžšแžนแž„ ("===" แž“แžทแž„ "!==") แž›แžพแž‘แžทแž“แŸ’แž“แž“แŸแž™แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแž—แŸแž‘ แž“แžทแž„แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž•แŸ’แžŸแŸแž„แŸ—แž‚แŸ’แž“แžถ แžŠแŸ‚แž›แžแŸ‚แž„แžแŸ‚แžแŸ’แžšแžกแž”แŸ‹แž˜แžทแž“แž–แžทแžแŸ”

    แž€แžถแžšแž…แŸ’แž“แŸƒแž”แŸ’แžšแžŒแžทแžแžŸแŸ†แžแžถแž“แŸ‹แŸ—แž“แŸ…แž€แŸ’แž“แžปแž„ PHPStan 1.0แŸ–

    • แž€แž˜แŸ’แžšแžทแžแž–แžทแž“แžทแžแŸ’แž™ "9" แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แž แžŠแŸ‚แž›แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž—แŸแž‘ "แž…แž˜แŸ’แžšแžปแŸ‡" แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ†แžŽแž„แžšแŸ€แž”แž…แŸ†แž˜แžปแžแž„แžถแžšแž‘แž‘แžฝแž›แž”แŸ‰แžถแžšแŸ‰แžถแž˜แŸ‰แŸ‚แžแŸ’แžšแž‡แžถแž˜แžฝแž™แž”แŸ’แžšแž—แŸแž‘แž•แŸ’แžŸแŸแž„แŸ—แž‚แŸ’แž“แžถแŸ” แž€แž˜แŸ’แžšแžทแžแž‘แžธ XNUMX แž€แŸ†แžŽแžแŸ‹แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแŸ‚แž›แž˜แžทแž“แž˜แžถแž“แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–แž“แŸƒ "แž›แžถแž™แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถ" แžŠแžผแž…แž‡แžถแž€แžถแžšแž”แž‰แŸ’แž‡แžผแž“แžแž˜แŸ’แž›แŸƒแž“แŸƒแž”แŸ’แžšแž—แŸแž‘ "แž›แžถแž™" แž‘แŸ…แž”แŸ’แžšแž—แŸแž‘แž•แŸ’แžŸแŸแž„แž‘แŸ€แž แž€แžถแžšแž แŸ…แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžšแž“แŸƒแž”แŸ’แžšแž—แŸแž‘ "แž›แžถแž™แž”แž‰แŸ’แž…แžผแž›แž‚แŸ’แž“แžถ" แž“แžทแž„แž€แžถแžšแž…แžผแž›แž”แŸ’แžšแžพแž›แž€แŸ’แžแžŽแŸˆแžŸแž˜แŸ’แž”แžแŸ’แžแžทแžšแž”แžŸแŸ‹แžœแžถ แž–แŸ’แžšแŸ„แŸ‡แžœแžถแž”แŸ’แžšแž แŸ‚แž›แž‡แžถแž˜แžทแž“แž˜แžถแž“แŸ”
    • แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แžแžถแžแžพแžแž˜แŸ’แž›แŸƒแžแŸ’แžšแžกแž”แŸ‹แž‚แžบแžŠแžผแž…แž‚แŸ’แž“แžถแž”แŸแŸ‡แž”แžทแž‘แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž แŸ…แž˜แžปแžแž„แžถแžšแžŠแžผแž…แž‚แŸ’แž“แžถแžŠแŸ„แž™แž”แŸ’แžšแžพแž…แŸ†แžŽแžถแžšแž–แž“แŸ’แž™แž›แŸ‹ @phpstan-pure แž“แžทแž„ @phpstan-impure แŸ”
    • แžœแžถแž™แž€แžถแžšแžœแžทแž—แžถแž‚แž“แŸ…แž€แŸ’แž“แžปแž„ try-catch-finally constructs แžŠแŸ„แž™แž”แŸ’แžšแžพ @throws annotations แŸ”
    • แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽแž“แŸƒแž›แž€แŸ’แžแžŽแŸˆแžŸแž˜แŸ’แž”แžแŸ’แžแžทแž•แŸ’แž‘แŸƒแž€แŸ’แž“แžปแž„ (แžฏแž€แž‡แž“) แžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž˜แžทแž“แž”แžถแž“แž”แŸ’แžšแžพ แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžš แž“แžทแž„แžแŸแžšแŸ”
    • แž†แŸ’แž›แž„แž€แžถแžแŸ‹แž€แžถแžšแž แŸ…แžแŸ’แžšแžกแž”แŸ‹แž˜แž€แžœแžทแž‰แžŠแŸ‚แž›แž˜แžทแž“แž†แž”แž‚แŸ’แž“แžถแž‘แŸ…แž“แžนแž„แž˜แžปแžแž„แžถแžšแžขแžถแžšแŸแžŠแžผแž…แž‡แžถ array_map แž“แžทแž„ usort แŸ”
    • แžœแžถแž™แž”แž‰แŸ’แž…แžผแž›แž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แŸ†แžŽแžถแžšแž–แž“แŸ’แž™แž›แŸ‹แž”แŸ’แžšแž—แŸแž‘แžขแž€แŸ’แžŸแžšแžŠแŸ‚แž›แž”แžถแžแŸ‹แŸ”
    • แž”แžถแž“แž’แŸ’แžœแžพแžŸแŸแž…แž€แŸ’แžแžธแž”แŸ’แžšแž€แžถแžŸแž”แŸ’แžšแž—แŸแž‘แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž‚แŸ’แž“แžถแž‡แžถแž˜แžฝแž™ PHPDocs แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž”แŸ’แžšแž—แŸแž‘แž–แžธแžŸแžถแžšแž€แŸ†แž แžปแžŸแžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž“แŸ…แž€แŸ’แž“แžปแž„ PHPDocs แŸ”

    แž”แŸ’แžšแž—แž–: opennet.ru

  • แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹