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\Rfc4122;
16
 
17
use Ramsey\Uuid\Uuid;
18
use Ramsey\Uuid\Validator\ValidatorInterface;
19
 
20
use function preg_match;
21
use function str_replace;
22
 
23
/**
24
 * Rfc4122\Validator validates strings as UUIDs of the RFC 4122 variant
25
 *
26
 * @psalm-immutable
27
 */
28
final class Validator implements ValidatorInterface
29
{
30
    private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-'
31
        . '[1-8][0-9A-Fa-f]{3}-[ABab89][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}\z';
32
 
33
    /**
34
     * @psalm-return non-empty-string
35
     * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty
36
     * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty
37
     */
38
    public function getPattern(): string
39
    {
40
        return self::VALID_PATTERN;
41
    }
42
 
43
    public function validate(string $uuid): bool
44
    {
45
        $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid);
46
        $uuid = strtolower($uuid);
47
 
48
        return $uuid === Uuid::NIL || $uuid === Uuid::MAX || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid);
49
    }
50
}