. namespace core\attribute; use core\exception\coding_exception; /** * Attribute to describe a deprecated item. * * @package core * @copyright 2023 Andrew Lyons * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ #[\Attribute] class deprecated { /** * A deprecated item. * * This attribute can be applied to any function, class, method, constant, property, enum, etc. Note that at least one of * $replacement, $since or $reason parameters must be non-null * * Note: The mere presence of the attribute does not do anything. It must be checked by some part of the code. * * @param null|string $replacement Any replacement for the deprecated thing * @param null|string $since When it was deprecated * @param null|string $reason Why it was deprecated * @param null|string $mdl Link to the Moodle Tracker issue for more information * @param bool $final Whether this is a final deprecation * @param bool $emit Whether to emit a deprecation warning */ public function __construct( public readonly ?string $replacement = null, public readonly ?string $since = null, public readonly ?string $reason = null, public readonly ?string $mdl = null, public readonly bool $final = false, public readonly bool $emit = true, ) { if ($replacement === null && $reason === null && $mdl === null) { throw new coding_exception( 'A deprecated item must provide either a replacement, reason, or an issue number.', ); } } }