mirror of
https://github.com/Respect/Validation.git
synced 2026-03-16 15:25: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
833 B
PHP
39 lines
833 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 SplFileInfo;
|
|
|
|
use function is_executable;
|
|
use function is_scalar;
|
|
|
|
#[Attribute(Attribute::TARGET_PROPERTY | Attribute::IS_REPEATABLE)]
|
|
#[Template(
|
|
'{{name}} must be an executable file',
|
|
'{{name}} must not be an executable file',
|
|
)]
|
|
final class Executable extends Simple
|
|
{
|
|
public function isValid(mixed $input): bool
|
|
{
|
|
if ($input instanceof SplFileInfo) {
|
|
return $input->isExecutable();
|
|
}
|
|
|
|
if (!is_scalar($input)) {
|
|
return false;
|
|
}
|
|
|
|
return is_executable((string) $input);
|
|
}
|
|
}
|