(PHP 8 >= 8.5.0)
ΠΡΡΠΈΠ±ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ²ΠΈΠΆΠΎΠΊ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ: Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ, Π½Π΅ Π²Π΅ΡΠ½ΡΠ»ΠΈ, Π½Π΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π»ΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
ΠΡΡΠΈΠ±ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π°ΡΠ΅Π»ΠΈΠ²Π°ΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·-Π·Π° ΡΠΈΡΠΊΠ° ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ (void), ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠ΅Π»ΠΈΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π PHP 8.4 ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ
#[\NoDiscard], ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ ΡΡΡΡΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. Π PHP 8.5 ΠΈ Π²ΡΡΠ΅ Π΄Π²ΠΈΠΆΠΎΠΊ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π»ΠΈ. ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅$_Π½Π΅ Π½Π°ΡΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠ΅ΠΆΠ½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ PHP, Π² ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ(void), ΠΈ ΠΏΠΎΠ΄Π°Π²ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π° PHP 8.5.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΡΠΈΠ±ΡΡ
#[\NoDiscard]ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ, Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΄Π°ΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ·Π²Π°Π»ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅. ΠΠΎΡΡΠΎΠΌΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ°#[\NoDiscard]ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠ»ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ#[\NoDiscard], Π½Π΅ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠΈΠ»ΠΈ ΡΡΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ. ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΠΌΠ΅ΡΠΎΠ΄, ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ· ΡΡΠ΅ΠΉΡΠ°, ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΡΠ°ΠΌ.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
<?php
/**
* ΠΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ², ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
* ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ null ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ,
* Π° ΠΎΠ±ΡΠ΅ΠΊΡ Exception ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ»ΡΡΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° $items.
*
* @param array<string> $items
* @return array<null|Exception>
*/
#[\NoDiscard("ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π΅ΡΠΎΡΡΠ½Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°")]
function bulk_process(array $items): array
{
$results = [];
foreach ($items as $key => $item) {
if (\random_int(0, 9999) < 9999) {
// ΠΠΌΠΈΡΠ°ΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ $item
// Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ ΡΡΠΏΠ΅Ρ
Π° 99,99 %.
echo "ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ {$item}", PHP_EOL;
$error = null;
} else {
$error = new \Exception("ΠΡΠΈΠ±ΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ {$item}.");
}
$results[$key] = $error;
}
return $results;
}
bulk_process($items);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π² PHP 8.5 Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½:
Warning: The return value of function bulk_process() should either be used or intentionally ignored by casting it as (void), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π΅ΡΠΎΡΡΠ½Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΠΡΠΈΠΌΠ΅Ρ #2 ΠΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°
<?php
#[\NoDiscard]
function some_command(): int
{
return 1;
}
// ΠΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ (void) β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² PHP 8.5+
(void) some_command();
// ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ PHP Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 8.5
$_ = some_command();