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