src/Abstracts/aField.php
public function validateValue($v) : bool
    {
        $iCV = $this->internal_CheckValue($v);

        $this->fieldState_ValidateState             = $iCV["state"];
        $this->fieldState_ValidateStateCanSet       = $iCV["canSet"];
        $this->fieldState_CollectionValidateState   = $iCV["cState"];

        return ($iCV["canSet"] === true && $iCV["valid"] === true);
    }
public function validateValue($v) : bool
    {
        $iCV = $this->internal_CheckValue($v);

        $this->fieldState_ValidateState             = $iCV["state"];
        $this->fieldState_ValidateStateCanSet       = $iCV["canSet"];
        $this->fieldState_CollectionValidateState   = $iCV["cState"];

        return ($iCV["canSet"] === true && $iCV["valid"] === true);
    }
Verifica se o valor indicado satisfaz os critérios que
permitem dizer que o valor passado é válido.

- Valores especiais:
-- undefined
Sempre falhará na validação.

-- null
Falhará se o campo não permitir este valor [allowNull].

-- ""
Falhará se o campo não permitir este valor [allowEmpty] e
estiver com a conversão de "" em "null" desabilitada [convertEmptyToNull].

-- []
Falhará SEMPRE para campos que não forem "collection".


- Campos Simples
A validação é feita seguindo os seguintes passos:
-- 1 Verifica se o campo está apto a receber um valor ou se ele é do tipo "readOnly".
-- 2 Verifica se o valor passado cai em algum dos valores especiais citados acima.
-- 3 Verifica se o valor passado não é um objeto de um tipo não aceito.
Os tipos aceitos para campos simples são:
Bool, Int, Float, RealNumber, DateTime, String
-- 4 Validação de tipo:
-- 4.1 Havendo um "inputFormat" definido, identifica se o valor passado passa na
respectiva validação.
-- 4.2 Verifica se o valor passado é um representante válido do tipo base do campo.

-- 5 Verificação de adequação:
-- 5.1 Enumerador, se houver, verifica se o valor está entre os itens válidos.
-- 5.2 Sendo um campo "String" e existindo uma definição de tamanho máximo [length]
verifica se o valor passado não excede seu limite.
-- 5.3 Sendo um campo numérico ou de data e existindo limites definidos para seus
valores mínimos e máximos, identifica se o valor passado não excede algum destes
limites.

-- Valores esperados
null, Bool, Int, Float, RealNumber, DateTime, String

- Regras de aceitação
-- No passo 4.1, caso falhe na validação de "inputFormat" mas tanto o valor passado quanto
o próprio campo são "string". A validação não impedirá que o valor seja definido para
o campo, mas ele ficará invalido.
-- Com excessão da regra especificada acima, falhas ocorridas até o passo 5 invalida
totalmente o valor para poder ser definido como o valor do campo atual.
-- Falhas ocorridas no passo 5, apesar de falhar na validação, indica que o valor poderá
passar a representar o valor atual do campo mas seu estado passará a ser "invalido".


- Campos "reference"
A validação é feita tentando usar o conjunto de valores passado para que ele preencha
os campos de um modelo de dados do mesmo tipo que este campo está apto a representar.
É preciso que TODAS as respectivas chaves de dados compatíveis com o modelo de dados
representado pelo campo possam ser aceitos (independente de serem válidos) para que o
objeto seja validado.

-- Valores esperados
null, iterable, Array, iModel


- Campos "collection"
A validação é feita submetendo cada um dos membros da coleção indicada a seu
respectivo tipo de validação. Os dados serão utilizados pelo campo se todos os membros
apresentados puderem ser definidos.

-- Valores esperados
null, Array


@param       mixed $v
Valor que será testado.

@return      bool