Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/**
4
 * This file is part of the ramsey/uuid library
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 *
9
 * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
10
 * @license http://opensource.org/licenses/MIT MIT
11
 */
12
 
13
declare(strict_types=1);
14
 
15
namespace Ramsey\Uuid\Validator;
16
 
17
use Ramsey\Uuid\Uuid;
18
 
19
use function preg_match;
20
use function str_replace;
21
 
22
/**
23
 * GenericValidator validates strings as UUIDs of any variant
24
 *
25
 * @psalm-immutable
26
 */
27
final class GenericValidator implements ValidatorInterface
28
{
29
    /**
30
     * Regular expression pattern for matching a UUID of any variant.
31
     */
32
    private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\z';
33
 
34
    /**
35
     * @psalm-return non-empty-string
36
     * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty
37
     * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty
38
     */
39
    public function getPattern(): string
40
    {
41
        return self::VALID_PATTERN;
42
    }
43
 
44
    public function validate(string $uuid): bool
45
    {
46
        $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid);
47
 
48
        return $uuid === Uuid::NIL || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid);
49
    }
50
}