PHP.mk документација

NoDiscard

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

class.nodiscard.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека class.nodiscard.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
NoDiscard

Референца за `class.nodiscard.php` со подобрена типографија и навигација.

class.nodiscard.php

Атрибутот NoDiscard

Атрибутот DelayedTargetValidation

Вовед

Овој атрибут може да се користи за да се укаже дека вратената вредност од функција или метод не треба да се отфрли. Ако вратената вредност не се користи на кој било начин, ќе се емитува предупредување.

Ова е корисно за функции каде што непроверувањето на вратената вредност веројатно е грешка.

За намерно отфрлање на вратената вредност од таква функција, користете (void) каст за да го потиснете предупредувањето.

Забелешка: Бидејќи атрибутите се дизајнирани да бидат компатибилни наназад, #[\NoDiscard] може да се додаде на функции и методи дури и кога се поддржани PHP 8.4 или пониско, само што нема да прави ништо. На PHP 8.5 и погоре ќе се емитува предупредување ако резултатот не се користи. За да го потиснете предупредувањето без да користите (void), што не е поддржано пред PHP 8.5, разгледајте користење променлива како $_.

Забелешка: #[\NoDiscard] applies to the specific function or method declaration it is written on, and the warning is emitted based on the declaration that is actually called. As a result, adding #[\NoDiscard] to an interface method or an abstract method does not emit a warning, because the method that is invoked is the implementing or overriding method. Likewise, a method that overrides a #[\NoDiscard] method does not emit the warning unless it is itself marked with the attribute. In contrast, a method imported from a trait keeps the attribute, because the trait method is copied into the using class as if declared there.

Синопсис на класата

#[\Attribute]
final class NoDiscard {
/* Својства */
public readonly ?string $message;
/* Методи */
public function __construct(?string $message = null)
}

Својства

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();

?>

Види Исто така

Содржина

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.