NoDiscard
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
NoDiscard
Референца за `class.nodiscard.php` со подобрена типографија и навигација.
Атрибутот NoDiscard
Атрибутот DelayedTargetValidation
Вовед
Овој атрибут може да се користи за да се укаже дека вратената вредност од функција или метод не треба да се отфрли. Ако вратената вредност не се користи на кој било начин, ќе се емитува предупредување.
Ова е корисно за функции каде што непроверувањето на вратената вредност веројатно е грешка.
За намерно отфрлање на вратената вредност од таква функција, користете (void) каст за да го потиснете предупредувањето.
Забелешка: Бидејќи атрибутите се дизајнирани да бидат компатибилни наназад,
#[\NoDiscard]може да се додаде на функции и методи дури и кога се поддржани PHP 8.4 или пониско, само што нема да прави ништо. На PHP 8.5 и погоре ќе се емитува предупредување ако резултатот не се користи. За да го потиснете предупредувањето без да користите(void), што не е поддржано пред PHP 8.5, разгледајте користење променлива како$_.
Синопсис на класата
Својства
- message
- Изборна порака што објаснува зошто вратената вредност не треба да се отфрли.
Примери
Пример #1 Основна употреба
<?php
/**
* Processes all the given items and returns an array with the results of the
* operation for each item. `null` indicates success and an Exception indicates
* an error. The keys of the result array match the keys of the $items array.
*
* @param array<string> $items
* @return array<null|Exception>
*/
#[\NoDiscard("as processing might fail for individual items")]
function bulk_process(array $items): array {
$results = [];
foreach ($items as $key => $item) {
if (\random_int(0, 9999) < 9999) {
// Pretend to do something useful with $item,
// which will succeed in 99.99% of cases.
echo "Processing {$item}", PHP_EOL;
$error = null;
} else {
$error = new \Exception("Failed to process {$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), as processing might fail for individual items
Пример #2 Намерно отфрлање на вратената вредност
<?php
#[\NoDiscard]
function some_command(): int {
return 1;
}
// Suppress the warning using (void) - PHP 8.5+
(void) some_command();
// For compatibility with PHP versions before 8.5, use a temporary variable
$_ = some_command();
?>Види Исто така
Содржина
- NoDiscard::__construct — Конструирај нова инстанца на атрибутот NoDiscard