1.0๋ ๊ฐ์ ๊ฐ๋ฐ ๋์ ์ ์ ๋ถ์๊ธฐ PHPStan XNUMX์ ์ฒซ ๋ฒ์งธ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋์์ต๋๋ค. ์ด๋ฅผ ํตํด PHP ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋ ๋จ์ ํ ์คํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ PHP ์ฝ๋์์ ์ค๋ฅ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ํ๋ก์ ํธ ์ฝ๋๋ PHP๋ก ์์ฑ๋์์ผ๋ฉฐ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
๋ถ์๊ธฐ๋ 10๊ฐ์ง ๊ฒ์ฌ ์์ค์ ์ ๊ณตํ๋ฉฐ, ๊ฐ ํ์ ์์ค์ ์ด์ ์์ค์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ ๋์ฑ ์๊ฒฉํ ๊ฒ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ์ธ๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์ ์:
- ์ธ์คํด์ค ์ค๋ธ(instanceof), ์บ์น(catch), ํ์ ํํธ(typehints) ๋ฐ ๊ธฐํ ์ธ์ด ๊ตฌ์ฑ์ ์ฌ์ฉ๋๋ ํด๋์ค์ ์กด์ฌ.
- ํธ์ถ๋ ๋ฉ์๋์ ํจ์์ ์กด์ฌ ์ฌ๋ถ์ ๊ฐ์ฉ์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ๋ฌ๋ ์ธ์์ ์.
- ๋ฉ์๋๊ฐ ๋ฐํ ํํ์์ ์ ์๋ ๊ฒ๊ณผ ๋์ผํ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋์ง ํ์ธํฉ๋๋ค.
- ์ก์ธ์ค๋๋ ์์ฑ์ ์กด์ฌ ๋ฐ ๊ฐ์์ฑ, ์์ฑ์ ์ฌ์ฉ๋ ์ ์ธ๋ ๋ฐ์ดํฐ ์ ํ ๋ฐ ์ค์ ๋ฐ์ดํฐ ์ ํ์ ํ์ธํฉ๋๋ค.
- ๋ฌธ์์ด ํ์ํ ๋ธ๋ก์ sprintf/printf ํธ์ถ์ ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์ ์๊ฐ ์ ํํฉ๋๋ค.
- ๋ถ๊ธฐ ์ฐ์ฐ์์ ๋ฃจํ๋ก ํ์ฑ๋ ๋ธ๋ก์ ๊ณ ๋ คํ ๋ณ์์ ์กด์ฌ.
- ํญ์ false๋ฅผ ๋ฐํํ๋ ๋ค์ํ ์ ํ๊ณผ ํผ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ชจ ์๋ ์ ํ ์บ์คํ (์: "(string) 'foo'") ๋ฐ ์๊ฒฉํ ํ ์คํธ("===" ๋ฐ "!==").
PHPStan 1.0์ ์ฃผ์ ํ์ ์ฌํญ:
- ๋ค์ํ ์ ํ์ ๋งค๊ฐ๋ณ์์ ๋ํ ํจ์์ ์์ ์ ๊ตฌ์ฑํ๊ธฐ ์ํ "ํผํฉ" ์ ํ์ ์ฌ์ฉ์ ํ์ธํ๋ "9" ๊ฒ์ฌ ์์ค์ด ๊ตฌํ๋์์ต๋๋ค. ๋ ๋ฒจ XNUMX๋ "mixed" ์ ํ์ ๊ฐ์ ๋ค๋ฅธ ์ ํ์ผ๋ก ์ ๋ฌํ๊ณ , "mixed" ์ ํ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ํด๋น ์์ฑ์ด ์กด์ฌํ์ง ์์ ์ ์์ผ๋ฏ๋ก ํด๋น ์์ฑ์ ์ก์ธ์คํ๋ ๋ฑ "mixed"์ ์์ ํ์ง ์์ ์ฌ์ฉ์ ์๋ณํฉ๋๋ค.
- @phpstan-pure ๋ฐ @phpstan-impure ์ฃผ์์ ์ฌ์ฉํ์ฌ ๋์ผํ ํจ์ ํธ์ถ์ ๋ํด ๋ฐํ ๊ฐ์ด ๋์ผํ์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
- @throws ์ฃผ์์ ์ฌ์ฉํ์ฌ try-catch-finally ๊ตฌ๋ฌธ์ ์ ํ ๋ถ์์ ์ํํฉ๋๋ค.
- ์ ์๋์์ง๋ง ์ฌ์ฉ๋์ง ์์ ๋ด๋ถ(๋น๊ณต๊ฐ) ์์ฑ, ๋ฉ์๋ ๋ฐ ์์ ์๋ณ.
- array_map ๋ฐ usort์ ๊ฐ์ ๋ฐฐ์ด ํจ์์ ํธํ๋์ง ์๋ ์ฝ๋ฐฑ์ ์ ๋ฌํฉ๋๋ค.
- ๋๋ฝ๋ ์ ํ ํํธ ์ฃผ์์ ๋ํ ์ ํ ๊ฒ์ฌ์ ๋๋ค.
- PHPDoc๊ณผ ํธํ๋๋ ์ ํ ์ ์ธ์ ๋ง๋ค์ด ์ค๋ฅ ๋ฉ์์ง์ ์ ํ์ PHPDoc์์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ต๋๋ค.
์ถ์ฒ : opennet.ru