private function setInputFormat($if) : void
    {
        if ($if !== null) {
            if (is_array($if) === true) {
                $requiredKeys = ["name", "length", "check", "removeFormat", "format", "storageFormat"];

                foreach ($requiredKeys as $key) {
                    if (array_key_exists($key, $if) === false) {
                        $msg = "Lost required key in the given input format rule.";
                        throw new \InvalidArgumentException($msg);
                    } else {
                        $msg = null;
                        $kVal = $if[$key];
                        switch ($key) {
                            case "name":
                                if (is_string($kVal) === false || strlen($kVal) === 0) {
                                    $msg = "Invalid given \"$key\" of input format. Expected a not empty string.";
                                }
                                break;

                            case "length":
                                if (is_int($kVal) === false && $kVal !== null) {
                                    $msg = "Invalid given \"$key\" of input format. Expected integer or null.";
                                }
                                break;

                            case "check":
                            case "removeFormat":
                            case "format":
                            case "storageFormat":
                                if (is_callable($kVal) === false) {
                                    $msg = "Invalid given \"$key\" of input format. Expected callable.";
                                }
                                break;
                        }

                        if ($msg !== null) {
                            throw new \InvalidArgumentException($msg);
                        }
                    }
                }

                $this->inputFormat = [
                    "name"          => strtoupper($if["name"]),
                    "length"        => (($if["length"] === null) ? null : (int)$if["length"]),
                    "check"         => $if["check"],
                    "removeFormat"  => $if["removeFormat"],
                    "format"        => $if["format"],
                    "storageFormat" => $if["storageFormat"]
                ];
            } else {
                if (class_exists($if) === false) {
                    $if = "AeonDigital\\DataFormat\\Patterns\\" . str_replace(".", "\\", $if);
                }

                if (class_exists($if) === false) {
                    $msg = "The given \"inputFormat\" class does not exists.";
                    throw new \InvalidArgumentException($msg);
                } else {
                    $this->inputFormatReflection = new \ReflectionClass($if);

                    if ($this->isValidInputFormat($if) === false) {
                        $msg = "The given \"inputFormat\" class does not implements the interface \"AeonDigital\\DataFormat\\Interfaces\\iFormat\".";
                        throw new \InvalidArgumentException($msg);
                    }

                    $this->inputFormat = [
                        "name"          => $if,
                        "length"        => $if::MaxLength,
                        "check"         => $if . "::check",
                        "removeFormat"  => $if . "::removeFormat",
                        "format"        => $if . "::format",
                        "storageFormat" => $if . "::storageFormat"
                    ];
                }
            }
        }
    }
private function setInputFormat($if) : void
    {
        if ($if !== null) {
            if (is_array($if) === true) {
                $requiredKeys = ["name", "length", "check", "removeFormat", "format", "storageFormat"];

                foreach ($requiredKeys as $key) {
                    if (array_key_exists($key, $if) === false) {
                        $msg = "Lost required key in the given input format rule.";
                        throw new \InvalidArgumentException($msg);
                    } else {
                        $msg = null;
                        $kVal = $if[$key];
                        switch ($key) {
                            case "name":
                                if (is_string($kVal) === false || strlen($kVal) === 0) {
                                    $msg = "Invalid given \"$key\" of input format. Expected a not empty string.";
                                }
                                break;

                            case "length":
                                if (is_int($kVal) === false && $kVal !== null) {
                                    $msg = "Invalid given \"$key\" of input format. Expected integer or null.";
                                }
                                break;

                            case "check":
                            case "removeFormat":
                            case "format":
                            case "storageFormat":
                                if (is_callable($kVal) === false) {
                                    $msg = "Invalid given \"$key\" of input format. Expected callable.";
                                }
                                break;
                        }

                        if ($msg !== null) {
                            throw new \InvalidArgumentException($msg);
                        }
                    }
                }

                $this->inputFormat = [
                    "name"          => strtoupper($if["name"]),
                    "length"        => (($if["length"] === null) ? null : (int)$if["length"]),
                    "check"         => $if["check"],
                    "removeFormat"  => $if["removeFormat"],
                    "format"        => $if["format"],
                    "storageFormat" => $if["storageFormat"]
                ];
            } else {
                if (class_exists($if) === false) {
                    $if = "AeonDigital\\DataFormat\\Patterns\\" . str_replace(".", "\\", $if);
                }

                if (class_exists($if) === false) {
                    $msg = "The given \"inputFormat\" class does not exists.";
                    throw new \InvalidArgumentException($msg);
                } else {
                    $this->inputFormatReflection = new \ReflectionClass($if);

                    if ($this->isValidInputFormat($if) === false) {
                        $msg = "The given \"inputFormat\" class does not implements the interface \"AeonDigital\\DataFormat\\Interfaces\\iFormat\".";
                        throw new \InvalidArgumentException($msg);
                    }

                    $this->inputFormat = [
                        "name"          => $if,
                        "length"        => $if::MaxLength,
                        "check"         => $if . "::check",
                        "removeFormat"  => $if . "::removeFormat",
                        "format"        => $if . "::format",
                        "storageFormat" => $if . "::storageFormat"
                    ];
                }
            }
        }
    }
private function setInputFormat ( $ if ) : void { if ( $ if !== null ) { if ( is_array ( $ if ) === true ) { $ requiredKeys = [ "name" , "length" , "check" , "removeFormat" , "format" , "storageFormat" ] ; foreach ( $ requiredKeys as $ key ) { if ( array_key_exists ( $ key , $ if ) === false ) { $ msg = "Lost required key in the given input format rule." ; throw new \ InvalidArgumentException ( $ msg ) ; } else { $ msg = null ; $ kVal = $ if [ $ key ] ; switch ( $ key ) { case "name" : if ( is_string ( $ kVal ) === false || strlen ( $ kVal ) === 0 ) { $ msg = "Invalid given \"$key\" of input format. Expected a not empty string." ; } break ; case "length" : if ( is_int ( $ kVal ) === false && $ kVal !== null ) { $ msg = "Invalid given \"$key\" of input format. Expected integer or null." ; } break ; case "check" : case "removeFormat" : case "format" : case "storageFormat" : if ( is_callable ( $ kVal ) === false ) { $ msg = "Invalid given \"$key\" of input format. Expected callable." ; } break ; } if ( $ msg !== null ) { throw new \ InvalidArgumentException ( $ msg ) ; } } } $ this -> inputFormat = [ "name" => strtoupper ( $ if [ "name" ] ) , "length" => ( ( $ if [ "length" ] === null ) ? null : ( int ) $ if [ "length" ] ) , "check" => $ if [ "check" ] , "removeFormat" => $ if [ "removeFormat" ] , "format" => $ if [ "format" ] , "storageFormat" => $ if [ "storageFormat" ] ] ; } else { if ( class_exists ( $ if ) === false ) { $ if = "AeonDigital\\DataFormat\\Patterns\\" . str_replace ( "." , "\\" , $ if ) ; } if ( class_exists ( $ if ) === false ) { $ msg = "The given \"inputFormat\" class does not exists." ; throw new \ InvalidArgumentException ( $ msg ) ; } else { $ this -> inputFormatReflection = new \ ReflectionClass ( $ if ) ; if ( $ this -> isValidInputFormat ( $ if ) === false ) { $ msg = "The given \"inputFormat\" class does not implements the interface \"AeonDigital\\DataFormat\\Interfaces\\iFormat\"." ; throw new \ InvalidArgumentException ( $ msg ) ; } $ this -> inputFormat = [ "name" => $ if , "length" => $ if :: MaxLength , "check" => $ if . "::check" , "removeFormat" => $ if . "::removeFormat" , "format" => $ if . "::format" , "storageFormat" => $ if . "::storageFormat" ] ; } } } }
A classe informada deve implementar a interface
"AeonDigital\DataFormat\Interfaces\iFormat".

Também deve ser aceito passar um array com as configurações de
formatação. Neste caso as seguintes posições devem ser usadas:

$arr = [
string "name"
Nome deste tipo de transformação.

int "length"
Tamanho máximo que uma string pode ter para ser aceita por este formato.

callable "check"
Função que valida a string para o tipo de formatação a ser definida.

callable "removeFormat"
Função que remove a formatação padrão.

callable "format"
Função que efetivamente formata a string para seu formato final.

callable "storageFormat"
Função que converte o valor para seu formato de armazenamento.
];

@param       ?array|?string $if
Nome completo da classe a ser usada.

@return      void

@throws      \InvalidArgumentException
Caso a classe indicada não seja válida.
A classe informada deve implementar a interface AeonDigital \ DataFormat \ Interfaces \ iFormat .