ΠΠΎΠΌΠΏΠ°Π½ΠΈΡΠ°ΡΠ° ΠΠΈΠΌΠ΅ΠΎ
ΠΡΠ°Π»ΠΌ Π³ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ ΡΠ°Π·Π½ΠΈ
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΈ ΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅ Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ
/** @var ΡΡΡΠΈΠ½Π³|null */
$a = foo();
/** @var ΡΡΡΠΈΠ½Π³ $a */
echo strpos($a, 'Π·Π΄ΡΠ°Π²ΠΎ');
/** @psalm-assert-if-true B $a */
ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° isValidB(A $a) : bool {
Π²ΡΠ°ΡΠΈ $a ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ΄ B && $a->isValid();
}
ΠΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° Π΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ½Π°ΡΠ΄Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π΅ Π°Π»Π°ΡΠΊΠ°ΡΠ° Psalter, ΠΊΠΎΡΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΠΏΡΠΈΠΊΠ»ΡΡΠΎΡΠΈ ΠΈ
ΠΠΎ Π½ΠΎΠ²ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΠΡΠ°Π»ΠΌ
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ Π΅Ρ ΠΎ, exec, Π²ΠΊΠ»ΡΡΠΈ ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΠ΅. ΠΠΎΠ³Π° ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π·Π° Π±Π΅Π³ΡΡΠ²ΠΎ, ΡΠ΅ Π·Π΅ΠΌΠ°Π°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ΠΊΡΡ, Π½ΠΈΠ·ΠΈ ΡΠΎ SQL, HTML ΠΈ Shell ΠΊΠΎΠ΄, Π½ΠΈΠ·ΠΈ ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΎΡ ΡΠ΅ΠΆΠΈΠΌ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ ΡΡΠΎ Π²ΠΎΠ΄Π°Ρ Π΄ΠΎ ΡΠΊΡΠΈΠΏΡΠΈΡΠ°ΡΠ΅ ΠΌΠ΅ΡΡ ΡΡΡΠ°Π½ΠΈΡΠΈ (XSS) ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π° Π½Π° SQL.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ
-
ΠΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ JIT ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ , ΡΠΈΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π° ΡΠ΅ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΠ°. - ΠΠΎΠ΄Π΄ΡΡΠΊΠ°
ΡΠΈΠ½Π΄ΠΈΠΊΠ°Π»Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ , Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΡΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ ΠΎΠ΄ Π΄Π²Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΈΠΏΠ° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, βΡΠ°Π²Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° foo(Foo|Bar $input): int|float;β). - ΠΠΎΠ΄Π΄ΡΡΠΊΠ°
Π°ΡΡΠΈΠ±ΡΡΠΈ (Π·Π°Π±Π΅Π»Π΅ΡΠΊΠΈ) ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΠ΅ ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ (ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ) Π·Π° ΠΊΠ»Π°ΡΠΈ Π±Π΅Π· Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠ° Π½Π° Docblock. -
Π‘ΠΊΡΠ°ΡΠ΅Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π·Π° ΠΊΠ»Π°ΡΠΈ, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΡΠ²ΠΎΡΡΡΠ²Π°ΡΠ°. - ΠΠΎΠ² ΡΠΈΠΏ Π½Π° Π²ΡΠ°ΡΠ°ΡΠ΅ -
ΡΡΠ°ΡΠΈΡΠΊΠΈ . - ΠΠΎΠ² ΡΠΈΠΏ -
ΠΌΠ΅ΡΠ°Π½ΠΈ , ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΡΡΠ²ΡΠ΄ΠΈ Π΄Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΠΏΡΠΈΡΠ°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ. - ΠΠ·ΡΠ°Π·ΡΠ²Π°ΡΠ΅
ΡΡΠ»ΠΈ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ ΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈΡΠ΅. -
Π‘Π»Π°Π±Π° ΠΊΠ°ΡΡΠ° Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π°Ρ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΆΡΡΠ²ΡΠ²Π°Π°Ρ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΡΠ±ΡΠ΅ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΊΠ΅ΡΠΎΠ²ΠΈ). -
ΠΠΎΠΆΠ½ΠΎΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΈΠ·ΡΠ°Π·ΠΎΡ β::classβ Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ (Π°Π½Π°Π»ΠΎΠ³Π½ΠΎ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ΡΠΎ get_class()). -
ΠΠΎΠΆΠ½ΠΎΡΡ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π²ΠΎ Π±Π»ΠΎΠΊΠΎΡ Π·Π° ΡΠ°ΡΠ°ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ Π²ΡΠ·Π°Π½ΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. -
ΠΠΎΠΆΠ½ΠΎΡΡ ΠΎΡΡΠ°Π²Π°ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΊΠ° ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π²ΠΎ Π»ΠΈΡΡΠ°ΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ°. - ΠΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ
Π‘ΡΡΠΈΠ½Π³Π»ΠΈΠ² Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ ΡΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΡΡΡΠΈΠ½Π³ΠΎΠ²ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ°Ρ Π²ΠΎ ΡΡΡΠΈΠ½Π³ (Π·Π° ΠΊΠΎΡ Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ __toString(). - ΠΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ°
str_contains() , ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ Π°Π½Π°Π»ΠΎΠ³ Π½Π° strpos Π·Π° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ°Π²Π° Π½Π° ΠΏΠΎΠ΄Π½ΠΈΠ·Π°, ΠΊΠ°ΠΊΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ str_starts_with() ΠΈ str_ends_with() Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ ΠΈ ΠΊΡΠ°ΡΠΎΡ Π½Π° Π½ΠΈΠ·Π°ΡΠ°. - ΠΠΎΠ΄Π°Π΄Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°
fdiv () , ΠΊΠΎΡ Π²ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π½Π° Π΄Π΅Π»Π΅ΡΠ΅ Π±Π΅Π· Π΄Π° ΡΡΠ»ΠΈ Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ Π΄Π΅Π»Π΅ΡΠ΅ ΡΠΎ Π½ΡΠ»Π°. -
Π‘ΠΌΠ΅Π½Π΅ΡΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΡΠΏΠΎΡΡΠ²Π°ΡΠ΅ Π½ΠΈΠ·Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΡΠ°Π·ΠΎΡ βΠ΅Ρ ΠΎ βΠ·Π±ΠΈΡ:β . $a + $b' ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π±Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊΠΎ 'echo ("sum: " . $a) + $b', Π° Π²ΠΎ PHP 8 ΡΠ΅ ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ 'echo "sum: " . ($a + $b)'. -
ΠΠ°ΡΠ΅Π³Π½Π°ΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠΊΠΈΡΠ΅ ΠΈ Π±ΠΈΡΡΠΊΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ β[] % [42]β ΠΈ β$object + 4β ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ°Π°Ρ ΡΠΎ Π³ΡΠ΅ΡΠΊΠ°. -
ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ ΡΡΠ°Π±ΠΈΠ»Π΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠ°ΠΌ Π·Π° ΡΠΎΡΡΠΈΡΠ°ΡΠ΅ Π²ΠΎ ΠΊΠΎΡ ΡΠ΅ Π·Π°ΡΡΠ²ΡΠ²Π° ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ΠΎΡ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π½ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ°ΡΠ΅ΠΊΠΈ.
ΠΠ·Π²ΠΎΡ: opennet.ru