mirror of
https://github.com/Respect/Validation.git
synced 2026-03-16 23:35: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.
44 lines
916 B
PHP
44 lines
916 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 Directory as NativeDirectory;
|
|
use Respect\Validation\Message\Template;
|
|
use Respect\Validation\Rules\Core\Simple;
|
|
use SplFileInfo;
|
|
|
|
use function is_dir;
|
|
use function is_scalar;
|
|
|
|
#[Attribute(Attribute::TARGET_PROPERTY | Attribute::IS_REPEATABLE)]
|
|
#[Template(
|
|
'{{name}} must be a directory',
|
|
'{{name}} must not be a directory',
|
|
)]
|
|
final class Directory extends Simple
|
|
{
|
|
public function isValid(mixed $input): bool
|
|
{
|
|
if ($input instanceof SplFileInfo) {
|
|
return $input->isDir();
|
|
}
|
|
|
|
if ($input instanceof NativeDirectory) {
|
|
return true;
|
|
}
|
|
|
|
if (!is_scalar($input)) {
|
|
return false;
|
|
}
|
|
|
|
return is_dir((string) $input);
|
|
}
|
|
}
|