Change record status: 
Project: 
Introduced in branch: 
11.2.x
Introduced in version: 
11.2.0
Description: 

This runs during the status report runtime check.

This hook is equivalent to the hook_requirements($phase = 'runtime').

This runs after hook_requirements().

This can be implemented using #[Hook('runtime_requirements')]

There is a hook_runtime_requirements_alter() that runs after all requirements checks during status report checks.

Before

/**
 * Implements hook_requirements().
 *
 * Display information about getting upload progress bars working.
 */
function file_requirements($phase) {
  $requirements = [];

  if ($phase != 'runtime') {
    return $requirements;
  }
  // Check the uploadprogress extension is loaded.
  if (extension_loaded('uploadprogress')) {
    $value = t('Enabled (<a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress</a>)');
    $description = NULL;
  }
  $requirements['file_progress'] = [
    'title' => t('Upload progress'),
    'value' => $value,
    'description' => $description,
  ];

  return $requirements;
}

After


namespace Drupal\file\Hook;

use Drupal\Core\Hook\Attribute\Hook;

/**
 * RuntimeRequirements for file.
 */
class FileRequirementsHook {

  /**
   * Implements hook_runtime_requirements().
   */
  #[Hook('runtime_requirements')]
  public function runtime(): array {
    $requirements = [];
    // Check the uploadprogress extension is loaded.
    if (extension_loaded('uploadprogress')) {
      $value = t('Enabled (<a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress</a>)');
      $description = NULL;
    }
    $requirements['file_progress'] = [
      'title' => t('Upload progress'),
      'value' => $value,
      'description' => $description,
    ];

    return $requirements;
  }
}
Impacts: 
Module developers
Site templates, recipes and distribution developers