ืฉื—ืจื•ืจ ืฉืœ PHPStan 1.0, ืžื ืชื— ืกื˜ื˜ื™ ืœืงื•ื“ PHP

ืœืื—ืจ ืฉืฉ ืฉื ื™ื ืฉืœ ืคื™ืชื•ื—, ื”ืชืจื—ืฉื” ื”ืžื”ื“ื•ืจื” ื”ื™ืฆื™ื‘ื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืžื ืชื— ื”ืกื˜ื˜ื™ PHPStan 1.0, ื”ืžืืคืฉืจืช ืœืžืฆื•ื ืฉื’ื™ืื•ืช ื‘ืงื•ื“ PHP ืžื‘ืœื™ ืœื‘ืฆืข ืื•ืชื• ื•ืœื”ืฉืชืžืฉ ื‘ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื”. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘ ื‘-PHP ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT.

ื”ืžื ืชื— ืžืกืคืง 10 ืจืžื•ืช ืฉืœ ื‘ื“ื™ืงื”, ืฉื‘ื”ืŸ ื›ืœ ืจืžื” ืฉืœืื—ืจ ืžื›ืŸ ืžืจื—ื™ื‘ื” ืืช ื”ื™ื›ื•ืœื•ืช ืฉืœ ื”ืงื•ื“ืžืช ื•ืžืกืคืงืช ื‘ื“ื™ืงื•ืช ืžื—ืžื™ืจื•ืช ื™ื•ืชืจ:

  • ื‘ื“ื™ืงื•ืช ื‘ืกื™ืกื™ื•ืช, ื”ื’ื“ืจืช ืžื—ืœืงื•ืช, ืคื•ื ืงืฆื™ื•ืช ื•ืฉื™ื˜ื•ืช ืœื ื™ื“ื•ืขื•ืช ($this), ืžืฉืชื ื™ื ืœื ืžื•ื’ื“ืจื™ื ื•ื”ืขื‘ืจืช ืžืกืคืจ ืœื ื ื›ื•ืŸ ืฉืœ ืืจื’ื•ืžื ื˜ื™ื.
  • ื–ื™ื”ื•ื™ ืžืฉืชื ื™ื ืœื ืžื•ื’ื“ืจื™ื, ืฉื™ื˜ื•ืช ืงืกื ืœื ื™ื“ื•ืขื•ืช ื•ืžืืคื™ื™ื ื™ื ืฉืœ ืžื—ืœืงื•ืช ืขื __call ื•-__get.
  • ื–ื™ื”ื•ื™ ืฉื™ื˜ื•ืช ืœื ื™ื“ื•ืขื•ืช ื‘ื›ืœ ื”ื‘ื™ื˜ื•ื™ื™ื, ืœื ืžื•ื’ื‘ืœ ืœืฉื™ื—ื•ืช ื“ืจืš $this. ื‘ื•ื“ืง PHPDocs.
  • ื‘ื“ื™ืงืช ืกื•ื’ื™ ื”ื—ื–ืจื•ืช ื•ื”ืงืฆืืช ื˜ื™ืคื•ืกื™ื ืœื ื›ืกื™ื.
  • ื–ื™ื”ื•ื™ ื‘ืกื™ืกื™ ืฉืœ ืงื•ื“ "ืžืช" (ืืฃ ืคืขื ืœื ื ืงืจื). ื–ื”ื” ืžื•ืคืข ืฉืœ ืงืจื™ืื•ืช ืฉืชืžื™ื“ ืžื—ื–ื™ืจื•ืช ืฉืงืจ, ื‘ืœื•ืงื™ื "ืื—ืจื™ื" ืฉืœืขื•ืœื ืื™ื ื ืคื•ืขืœื™ื, ื•ืงื•ื“ ืœืื—ืจ ื”ื—ื–ืจื”.
  • ื‘ื“ื™ืงืช ืกื•ื’ื™ ื”ืืจื’ื•ืžื ื˜ื™ื ื”ืžื•ืขื‘ืจื™ื ืœืฉื™ื˜ื•ืช ื•ืคื•ื ืงืฆื™ื•ืช.
  • ืื–ื”ืจื” ืœื’ื‘ื™ ื”ืขืจื•ืช ื—ืกืจื•ืช ืฉืœ ืžื™ื“ืข ืขืœ ืกื•ื’ื™ื.
  • ืื–ื”ืจื” ืœื’ื‘ื™ ืกื•ื’ื™ ืื™ื’ื•ื“ ืฉื’ื•ื™ื™ื ื”ืžื’ื“ื™ืจื™ื ืื•ืกืคื™ื ืฉืœ ืฉื ื™ ืกื•ื’ื™ื ืื• ื™ื•ืชืจ.
  • ืื–ื”ืจื” ืœื’ื‘ื™ ืฉื™ื˜ื•ืช ืงืจื™ืื” ื•ื’ื™ืฉื” ืœืžืืคื™ื™ื ื™ื ืขื ืกื•ื’ื™ "nullable".
  • ื‘ื“ื™ืงืช ื”ืฉื™ืžื•ืฉ ื‘ืกื•ื’ "ืžืขื•ืจื‘".

    ื“ื•ื’ืžืื•ืช ืœื‘ืขื™ื•ืช ื‘ืกื™ืกื™ื•ืช ืฉื–ื•ื”ื•:

    • ืงื™ื•ืžืŸ ืฉืœ ืžื—ืœืงื•ืช ื”ืžืฉืžืฉื•ืช ื‘-instanceof, catch, typhints ื•ื‘ื ื™ื™ื ื™ ืฉืคื” ืื—ืจื™ื.
    • ื”ืงื™ื•ื ื•ื”ื–ืžื™ื ื•ืช ืฉืœ ืฉื™ื˜ื•ืช ื•ืคื•ื ืงืฆื™ื•ืช ืฉื ืงืจืื•, ื›ืžื• ื’ื ืžืกืคืจ ื”ืืจื’ื•ืžื ื˜ื™ื ืฉืขื‘ืจื•.
    • ื‘ื“ื™ืงื” ืฉื”ืฉื™ื˜ื” ืžื—ื–ื™ืจื” ื ืชื•ื ื™ื ื‘ืื•ืชื• ืกื•ื’ ื›ืžื•ื’ื“ืจ ื‘ื‘ื™ื˜ื•ื™ ื”ื”ื—ื–ืจื”.
    • ืงื™ื•ืžื ื•ื”ื ืจืื•ืช ืฉืœ ื”ื ื›ืกื™ื ืืœื™ื”ื ื ื™ื’ืฉื™ื, ื•ื‘ื“ื™ืงืช ืกื•ื’ื™ ื”ื ืชื•ื ื™ื ื”ืžื•ืฆื”ืจื™ื ื•ื”ืžืžืฉื™ื™ื ื”ืžืฉืžืฉื™ื ื‘ื ื›ืกื™ื.
    • ืžืกืคืจ ื”ืคืจืžื˜ืจื™ื ื”ืžื•ืขื‘ืจื™ื ืœืงืจื™ืื•ืช sprintf/printf ื‘ื‘ืœื•ืง ื”ืขื™ืฆื•ื‘ ืฉืœ ื”ืžื—ืจื•ื–ืช ื ื›ื•ืŸ.
    • ืงื™ื•ืžื ืฉืœ ืžืฉืชื ื™ื ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ืœื•ืงื™ื ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ ืื•ืคืจื˜ื•ืจื™ื ืžืกื•ืขืคื™ื ื•ืœื•ืœืื•ืช.
    • ื”ืฉืœื›ื•ืช ื˜ื™ืคื•ืก ื—ืกืจื•ืช ืชื•ืขืœืช (ืœืžืฉืœ "(ืžื—ืจื•ื–ืช) 'foo'") ื•ื‘ื“ื™ืงื•ืช ืงืคื“ื ื™ื•ืช ("===" ื•-"!==") ืขืœ ื ืชื•ื ื™ื ืขื ืกื•ื’ื™ื ื•ืื•ืคืจื ื“ื™ื ืฉื•ื ื™ื ืฉืชืžื™ื“ ืžื—ื–ื™ืจื™ื false.

    ื—ื™ื“ื•ืฉื™ื ืžืจื›ื–ื™ื™ื ื‘-PHPStan 1.0:

    • ื”ื•ื˜ืžืขื” ืจืžืช ื”ืกื™ืžื•ืŸ "9", ื”ื‘ื•ื“ืงืช ืืช ื”ืฉื™ืžื•ืฉ ื‘ืกื•ื’ "ืžืขื•ืจื‘", ื”ืžื™ื•ืขื“ ืœืืจื’ื•ืŸ ืงืœื™ื˜ืช ื”ืคืจืžื˜ืจื™ื ืฉืœ ื”ืคื•ื ืงืฆื™ื” ืขื ืกื•ื’ื™ื ืฉื•ื ื™ื. ืจืžื” XNUMX ืžื–ื”ื” ืฉื™ืžื•ืฉื™ื ืœื ื‘ื˜ื•ื—ื™ื ืฉืœ "ืžืขื•ืจื‘", ื›ืžื• ื”ืขื‘ืจืช ืขืจื›ื™ื ืžืกื•ื’ "ืžืขื•ืจื‘" ืœืกื•ื’ ืื—ืจ, ืงืจื™ืื” ืœืฉื™ื˜ื•ืช ืžืกื•ื’ "ืžืขื•ืจื‘", ื•ื’ื™ืฉื” ืœืžืืคื™ื™ื ื™ื ืฉืœื• ื›ื™ ื™ื™ืชื›ืŸ ืฉื”ื ืœื ืงื™ื™ืžื™ื.
    • ืฉืœื˜ื• ืื ืขืจื›ื™ ื”ื—ื–ืจื” ื–ื”ื™ื ืขื‘ื•ืจ ืงืจื™ืื•ืช ื–ื”ื•ืช ืœืคื•ื ืงืฆื™ื•ืช ื‘ืืžืฆืขื•ืช ื”ื”ืขืจื•ืช @phpstan-pure ื•-@phpstan-impure.
    • ื ื™ืชื•ื— ืกื•ื’ ื‘- try-catch-finally ื‘ื•ื ื” ื‘ืืžืฆืขื•ืช ื”ืขืจื•ืช @throws.
    • ื–ื™ื”ื•ื™ ืฉืœ ืžืืคื™ื™ื ื™ื ืคื ื™ืžื™ื™ื (ืคืจื˜ื™ื™ื) ืžื•ื’ื“ืจื™ื ืืš ืœื ื‘ืฉื™ืžื•ืฉ, ืฉื™ื˜ื•ืช ื•ืงื‘ื•ืขื™ื.
    • ื”ืขื‘ืจืช ื”ืชืงืฉืจื•ื™ื•ืช ืœื ืชื•ืืžื•ืช ืœืคื•ื ืงืฆื™ื•ืช ืžืขืจืš ื›ื’ื•ืŸ array_map ื•-usort.
    • ื‘ื“ื™ืงืช ืกื•ื’ ืขื‘ื•ืจ ื”ืขืจื•ืช ืจืžื– ื—ืกืจ.
    • ื™ืฆืจ ื”ืฆื”ืจื•ืช ืกื•ื’ื™ื ืชื•ืืžื•ืช ืœ-PHPDocs, ืžื” ืฉืžืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืกื•ื’ื™ื ืžื”ื•ื“ืขื•ืช ืฉื’ื™ืื” ื‘-PHPDocs.

    ืžืงื•ืจ: OpenNet.ru

  • ื”ื•ืกืคืช ืชื’ื•ื‘ื”