respect-validation/library/Rules/Key.php
Henrique Moody 051866f75a
Make properties of "AbstractRelated" private
Following what is happening with pretty much every class in this
library, this commit will make the public properties of
"AbstractRelated" private.

Because other objects use some of those public properties, this commit
will also implement a couple of methods in "AbstractRelated" so they can
access the values they need.

This commit will also remove the method "decision" that makes dynamic
calls to "assert()," "check()," and "validate()" methods.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2019-05-05 16:54:04 +02:00

57 lines
1.4 KiB
PHP

<?php
/*
* This file is part of Respect/Validation.
*
* (c) Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
*
* For the full copyright and license information, please view the "LICENSE.md"
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Respect\Validation\Rules;
use Respect\Validation\Exceptions\ComponentException;
use Respect\Validation\Validatable;
use function array_key_exists;
use function is_array;
use function is_scalar;
/**
* @author Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
* @author Emmerson Siqueira <emmersonsiqueira@gmail.com>
* @author Henrique Moody <henriquemoody@gmail.com>
*/
final class Key extends AbstractRelated
{
/**
* @param mixed $reference
*/
public function __construct($reference, ?Validatable $rule = null, bool $mandatory = true)
{
if (!is_scalar($reference) || $reference === '') {
throw new ComponentException('Invalid array key name');
}
parent::__construct($reference, $rule, $mandatory);
}
/**
* {@inheritDoc}
*/
public function getReferenceValue($input)
{
return $input[$this->getReference()];
}
/**
* {@inheritDoc}
*/
public function hasReference($input): bool
{
return is_array($input) && array_key_exists($this->getReference(), $input);
}
}