mirror of
https://github.com/Respect/Validation.git
synced 2026-03-17 07:45:45 +01:00
There's no reason not to make this method public. It will actually be easier for users to test their rules when they extend this class if this method is public.
39 lines
845 B
PHP
39 lines
845 B
PHP
<?php
|
|
|
|
/*
|
|
* Copyright (c) Alexandre Gomes Gaigalas <alganet@gmail.com>
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Respect\Validation\Rules;
|
|
|
|
use Attribute;
|
|
use Respect\Validation\Message\Template;
|
|
use Respect\Validation\Rules\Core\Simple;
|
|
|
|
use function is_string;
|
|
use function mb_strlen;
|
|
use function preg_match;
|
|
|
|
#[Attribute(Attribute::TARGET_PROPERTY | Attribute::IS_REPEATABLE)]
|
|
#[Template(
|
|
'{{name}} must be a base64 encoded string',
|
|
'{{name}} must not be a base64 encoded string',
|
|
)]
|
|
final class Base64 extends Simple
|
|
{
|
|
public function isValid(mixed $input): bool
|
|
{
|
|
if (!is_string($input)) {
|
|
return false;
|
|
}
|
|
|
|
if (!preg_match('#^[A-Za-z0-9+/\n\r]+={0,2}$#', $input)) {
|
|
return false;
|
|
}
|
|
|
|
return mb_strlen($input) % 4 === 0;
|
|
}
|
|
}
|