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 เชเชจเซ‹เชŸเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชฎเชพเชจ เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒเซเชธ เชฎเชพเชŸเซ‡ เชตเชณเชคเชฐ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเชฎเชพเชจ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ‹.
    • @throws เชเชจเซ‹เชŸเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŸเซเชฐเชพเชฏ-เช•เซ‡เชš-เชซเชพเช‡เชจเชฒ เช•เชจเซเชธเซเชŸเซเชฐเช•เซเชŸเชฎเชพเช‚ เชŸเชพเช‡เชช เชเชจเชพเชฒเชฟเชธเชฟเชธ.
    • เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชชเชฐเช‚เชคเซ เชฌเชฟเชจเช‰เชชเชฏเซ‹เช—เซ€ เช†เช‚เชคเชฐเชฟเช• (เช–เชพเชจเช—เซ€) เช—เซเชฃเชงเชฐเซเชฎเซ‹, เชชเชฆเซเชงเชคเชฟเช“ เช…เชจเซ‡ เชธเซเชฅเชฟเชฐเชพเช‚เช•เซ‹เชจเซ€ เช“เชณเช–.
    • array_map เช…เชจเซ‡ usort เชœเซ‡เชตเชพ เช…เชฐเซ‡ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เช…เชธเช‚เช—เชค เช•เซ‰เชฒเชฌเซ…เช•เซเชธ เชชเชธเชพเชฐ เช•เชฐเชตเซเช‚.
    • เช—เซเชฎ เชฅเชฏเซ‡เชฒ เชŸเชพเช‡เชชเชนเชฟเชจเซเชŸ เชเชจเซ‹เชŸเซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชชเซเชฐเช•เชพเชฐ เชจเชฟเชฐเซ€เช•เซเชทเชฃ.
    • PHPDocs เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชค เชชเซเชฐเช•เชพเชฐเชจเซ€ เช˜เซ‹เชทเชฃเชพเช“ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เชœเซ‡ PHPDocs เชฎเชพเช‚ เชญเซ‚เชฒ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

    เชธเซ‹เชฐเซเชธ: opennet.ru

  • เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹