Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
namespace core\attribute;
18
 
1441 ariadna 19
use core\exception\coding_exception;
20
 
1 efrain 21
/**
22
 * Attribute to describe a deprecated item.
23
 *
24
 * @package    core
25
 * @copyright  2023 Andrew Lyons <andrew@nicols.co.uk>
26
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27
 */
28
#[\Attribute]
29
class deprecated {
1441 ariadna 30
 
1 efrain 31
    /**
32
     * A deprecated item.
33
     *
1441 ariadna 34
     * This attribute can be applied to any function, class, method, constant, property, enum, etc. Note that at least one of
35
     * $replacement, $since or $reason parameters must be non-null
1 efrain 36
     *
37
     * Note: The mere presence of the attribute does not do anything. It must be checked by some part of the code.
38
     *
39
     * @param null|string $replacement Any replacement for the deprecated thing
40
     * @param null|string $since When it was deprecated
41
     * @param null|string $reason Why it was deprecated
42
     * @param null|string $mdl Link to the Moodle Tracker issue for more information
43
     * @param bool $final Whether this is a final deprecation
44
     * @param bool $emit Whether to emit a deprecation warning
45
     */
46
    public function __construct(
1441 ariadna 47
        public readonly ?string $replacement = null,
1 efrain 48
        public readonly ?string $since = null,
49
        public readonly ?string $reason = null,
50
        public readonly ?string $mdl = null,
51
        public readonly bool $final = false,
52
        public readonly bool $emit = true,
53
    ) {
54
        if ($replacement === null && $reason === null && $mdl === null) {
1441 ariadna 55
            throw new coding_exception(
56
                'A deprecated item must provide either a replacement, reason, or an issue number.',
1 efrain 57
            );
58
        }
59
    }
60
}