ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Vimeo namoaka Π½ΠΎΠ²ΡΠΉ Π²ΡΠΏΡΡΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Salamo 3.12 , ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ Π²ΡΡΠ²Π»ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ ΡΡΡΠ΄Π½ΠΎΡΠ»ΠΎΠ²ΠΈΠΌΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Π½Π° ΡΠ·ΡΠΊΠ΅ PHP, Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΈΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΊΠ°ΠΊ Π² ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΡΠ°ΠΊ ΠΈ Π² ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠ΅ΡΡ Π² Π½ΠΎΠ²ΡΡ
Π²Π΅ΡΠΊΠ°Ρ
PHP. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ PHP ΠΈ nozarain'i eo ambanin'ny lisansa MIT.
Psalm ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ
Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Ρ
(ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Β«if ($a && $a) {}Β», Β«if ($a && !$a) {}Β» ΠΈ Β«if ($a) {} elseif ($a) {}Β»), Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ
Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»Ρ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΠ΅ΡΡ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΡΠ»ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ mampiasa Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Docblock (Β«/** @var Type */Β») Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ°Ρ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ
, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ assert. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
/** @var string|null */
$a = foo();
/** @var string $a */
echo strpos($a, βhelloβ);
/** @psalm-assert-if-true B $a */
function isValidB(A $a) : bool {
return $a instanceof B && $a->isValid();
}
ΠΠ»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° Psalter, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΈ Tsy mamela ΡΡΡΡΠ°Π½ΡΡΡ ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΊΠΎΠ΄Π΅, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ°Ρ
, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½ Π² Π΄ΡΡΠ³ΠΎΠ΅, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Π Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ Psalm ampiharina ΠΎΠΏΡΠΈΡ Β«βtaint-analysisΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Ρ
ΠΎΠ΄Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, $_GET[βnameβ]) ΠΈ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΌΠ΅ΡΡΠ°Ρ
, ΡΡΠ΅Π±ΡΡΡΠΈΡ
ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, echo Β«<h1>$name</h1>Β»), Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ΅ΡΠ΅Π· ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ
ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² $_GET, $_POST ΠΈ $_COOKIE, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ fanapahan-kevitra ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΠ· Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ
ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ HTML, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ°ΠΊ echo, exec, include ΠΈ header. ΠΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡ, ΡΡΡΠΎΠΊΠΈ Ρ SQL, HTML ΠΈ Shell-ΠΊΠΎΠ΄ΠΎΠΌ, ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ²Π»ΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠΎΠ΄Π΅, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΠΎΠΌΡ ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³Ρ (XSS) ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ SQL-ΠΊΠΎΠ΄Π°.
Fanampin'izany dia azo marihina izany manomboka Π°Π»ΡΡΠ°-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ PHP 8.0. Π Π΅Π»ΠΈΠ· Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π½Π° 26 Π½ΠΎΡΠ±ΡΡ. Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ fanavaozana Toy ny hoe:
Mihodina JIT compiler , ny fampiasana azy dia hanatsara ny famokarana.
fanohanana karazana sendika , mamaritra ny fanangonana karazana roa na maromaro (ohatra, "asa ho an'ny daholobe foo(Foo|Bar $ input): int|float;").
fanohanana toetra (fanazavana) izay ahafahanao mamatotra metadata (toy ny fampahalalana karazana) amin'ny kilasy nefa tsy mampiasa syntax Docblock.
Syntax nohafohezina famaritana kilasy, mamela anao hanambatra ny famaritana ny constructor sy ny fananana.
Karazana fiverenana vaovao - voasakantsakan'ny .
Karazana vaovao - mifangaro , izay azo ampiasaina hamaritana raha manaiky ny masontsivana isan-karazany ny asa iray.
teny manary hiatrehana ny exception.
WeakMap mba hamoronana zavatra azo atao sorona mandritra ny fanangonana fako (ohatra, mba hitahiry cache tsy ilaina).
fahafahana mampiasa ny teny hoe ":: class" ho an'ny zavatra (mitovy amin'ny fiantsoana get_class()).
fahafahana famaritana ao amin'ny sakana fisamborana maningana izay tsy mifamatotra amin'ny miovaova.
fahafahana mamela faingo aorian'ny singa farany amin'ny lisitry ny masontsivana fiasa.
Interface vaovao azo tady hamantarana izay karazana tady na angona azo ovaina ho tady (izay misy ny fomba __toString()).
endri-javatra vaovao str_contains() , strpos analogue notsorina mba hamaritana ny fisian'ny zana-tsipìka, ary koa ny fiasa str_starts_with() sy str_ends_with() mba hanamarinana ny lalao eo am-piandohana sy fiafaran'ny tady.
Nampiana endri-javatra fdiv() , izay manao asa fizarana tsy misy hadisoana raha zaraina aotra.
nanova lojika mampifandray tady. Ohatra, ny fitenenana 'echo "sum:" . $a + $b' dia nadika taloha hoe 'echo ("sum: " . $a) + $b', ary amin'ny PHP 8 dia raisina ho 'echo "sum: " . ($a + $b)'.
Mihenjana Ny fanamarinana ny asa arithmetika sy ny bitika, ohatra, dia miteraka hadisoana ny fitenenana "[] % [42]" sy "$object + 4".
ampiharina Algorithm fanasokajiana maharitra izay voatahiry ny filaharan'ny sanda mitovy amin'ny hazakazaka samihafa.
Source: opennet.ru