๋น๋ฉ์ค ํ์ฌ
์ํธ์ ์๋ชป๋ ์ ํ ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
๋ํ ๋ณด์ ํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ๊ฐ ์ ๊ณต๋์ด
/** @var ๋ฌธ์์ด|๋ */
$a = foo();
/** @var ๋ฌธ์์ด $a */
echo strpos($a, '์๋
ํ์ธ์');
/** @psalm-assert-if-true B $a */
ํจ์ isValidB(A $a) : bool {
B && $a->isValid()์ $a ์ธ์คํด์ค๋ฅผ ๋ฐํํฉ๋๋ค.
}
๋ฐ๊ฒฌ๋ ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐํ๊ธฐ ์ํด ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๋ Psalter ์ ํธ๋ฆฌํฐ๊ฐ ์ ๊ณต๋ฉ๋๋ค.
์ํธ์ ์๋ก์ด ํธ์์
๊ฒ์ฆ์ echo, exec, include, header ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด์ค์ผ์ดํ ํ์์ฑ์ ๋ถ์ํ ๋ ํ ์คํธ, SQL, HTML ๋ฐ ์ ธ ์ฝ๋๊ฐ ํฌํจ๋ ๋ฌธ์์ด, ์ธ์ฆ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋ ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ์ ํ์ด ๊ณ ๋ ค๋ฉ๋๋ค. ์ ์๋ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด XSS(๊ต์ฐจ ์ฌ์ดํธ ์คํฌ๋ฆฝํ ) ๋๋ SQL ๋์ฒด๋ก ์ด์ด์ง๋ ์ฝ๋์ ์ทจ์ฝ์ฑ์ ์๋ณํ ์ ์์ต๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ์ฃผ๋ชฉํ ์ ์๋ ๊ฒ์
-
์ ์ ์ผ๊ธฐ JIT ์ปดํ์ผ๋ฌ , ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฐ์ฑ์ด ํฅ์๋ฉ๋๋ค. - ์ง์
๋ ธ๋์กฐํฉ ์ข ๋ฅ , ๋ ๊ฐ ์ด์์ ์ ํ ์ปฌ๋ ์ ์ ์ ์ํฉ๋๋ค(์: "public function foo(Foo|Bar $input): int|float;"). - ์ง์
์์ฑ Docblock ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฉํ๋ฐ์ดํฐ(์: ์ ํ ์ ๋ณด)๋ฅผ ํด๋์ค์ ๋ฐ์ธ๋ฉํ ์ ์๋ (์ฃผ์) -
๋จ์ถ๋ ๊ตฌ๋ฌธ ํด๋์ค ์ ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฑ์ ์ ์์ ์์ฑ์ ๊ฒฐํฉํ ์ ์์ต๋๋ค. - ์๋ก์ด ๋ฐํ ์ ํ -
์ ์ ์ธ . - ์๋ก์ด ์ ํ -
ํผํฉ ๋ , ์ด๋ ํจ์๊ฐ ๋ค๋ฅธ ์ ํ์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ํํ
๋์ ธ ์์ธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. -
์ํฌ๋งต ๊ฐ๋น์ง ์์ง ์ค์ ํฌ์๋ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค(์: ๋ถํ์ํ ์บ์ ์ ์ฅ). -
๊ธฐํ ๊ฐ์ฒด์ ๋ํด "::class" ํํ์์ ์ฌ์ฉํฉ๋๋ค(get_class() ํธ์ถ๊ณผ ์ ์ฌ). -
๊ธฐํ ๋ณ์์ ๋ฐ์ธ๋ฉ๋์ง ์์ ์์ธ์ catch ๋ธ๋ก์ ์ ์๊ฐ ์์ต๋๋ค. -
๊ธฐํ ํจ์ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ๋ง์ง๋ง ์์ ๋ค์ ์ผํ๋ฅผ ๋จ๊น๋๋ค. - ์๋ก์ด ์ธํฐํ์ด์ค
์คํธ๋ง ๊ฐ๋ฅ ๋ฌธ์์ด๋ก ๋ณํ๋ ์ ์๋ ๋ฌธ์์ด ์ ํ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์๋ณํฉ๋๋ค(์ด ๊ฒฝ์ฐ __toString() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์). - ์๋ก์ด ๊ธฐ๋ฅ
str_contains() , ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฐ์์ ๊ฒฐ์ ํ๊ธฐ ์ํ strpos์ ๋จ์ํ๋ ์ ์ฌ์ฒด, ๋ฌธ์์ด์ ์์๊ณผ ๋์์ ์ผ์น ํญ๋ชฉ์ ํ์ธํ๊ธฐ ์ํ str_starts_with() ๋ฐ str_ends_with() ํจ์. - ์ถ๊ฐ๋ ๊ธฐ๋ฅ
fdiv() , XNUMX์ผ๋ก ๋๋ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ณ ๋๋๊ธฐ ์ฐ์ฐ์ ์ํํฉ๋๋ค. -
๋ณ๊ฒฝ๋จ ๋ฌธ์์ด ๊ฒฐํฉ ๋ ผ๋ฆฌ. ์๋ฅผ ๋ค์ด 'echo "sum:" ํํ์์ ๋๋ค. $a + $b'๋ ์ด์ ์๋ 'echo ("sum: " . $a) + $b'๋ก ํด์๋์์ง๋ง PHP 8์์๋ 'echo "sum: " ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ($a + $b)'. -
์กฐ์ฌ์ง ์๋ฅผ ๋ค์ด ์ฐ์ ๋ฐ ๋นํธ ์ฐ์ฐ์ ํ์ธํ๋ฉด "[] % [42]" ๋ฐ "$object + 4" ํํ์์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. -
๊ตฌํ ์ฌ๋ฌ ์คํ์์ ๋์ผํ ๊ฐ์ ์์๊ฐ ์ ์ง๋๋ ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ถ์ฒ : opennet.ru