Helper Post.
Funciones para obtener datos del $_POST

Code Helper

Helpers – Post – $_POST

Funciones para obtener los datos de la variable superglobal $·_POST en varios formatos. Obtener datos como un array, integer, char o array.

/**
 * HelperPost.php
 * @author      Code Develium
 */


/**
 * Class HelperPost
 */
abstract class HelpPost
{
    /**
     * Devuelve una variable del POST como un string
     * " => "
     *
     * @param string $clave
     * @param bool   $convertir_spacial_char
     *
     * @return string
     */
    public static function getString( $clave, 
                                      $convertir_spacial_char = false)
    {
        $ret = filter_input(INPUT_POST, $clave);
        if( $convertir_spacial_char ) {
            return htmlspecialchars($ret);
        }
        else{
            return ''.$ret;
        }
    }

    /**
     * Devuelve el valor de una variable del POST como un integer.
     * Si no es un integer, devuelve false.
     * Max int: 2147483647
     *
     * @param string $clave
     *
     * @return int|bool
     */
    public static function getInt($clave)
    {
        /* Max  2147483647 */
        $ret = filter_input(INPUT_POST, $clave);
        if (strval($ret) !== strval(intval($ret))) {
            return null;
        }
        return intval($ret);
    }

    /**
     * Devuelve un texto swl POST con tags de formato html.
     *
     * @param string $clave
     *
     * @return string|null
     */
    public static function getHtml($clave)
    {
        /* NO contiene htmlspecialchars() */
        return ''.filter_input(INPUT_POST, $clave);
    }

    /**
     * Devuelve el valor de una variable del POST como un double.
     * Si no es un integer o double, devuelve null.
     *
     * @param string $clave
     *
     * @return double|bool
     */
    public static function getFloat($clave)
    {
        $value = str_replace( ',', 
                              '.', 
                              filter_input(INPUT_POST, $clave));
        $ret = filter_var( $value, 
                           FILTER_SANITIZE_NUMBER_FLOAT,
                           FILTER_FLAG_ALLOW_FRACTION);
        if (false === $ret) {
            return null;
        }
        /* No usar doubleval */
        return (float)($value);
    }

    /**
     * Devuelve un string del POST.
     * No se comprueba el formato de la fecha.
     *
     * @param string $clave
     *
     * @return string
     */
    public static function getDateTime($clave)
    {
        /* Devuelve un string normal. El formato de fecha y hora ha de 
           ser comprobado desde afuera */
        /* ya que puede estar vacío */
        return ''.filter_input(INPUT_POST, $clave);
    }

    /**
     * Devuelve un string de fecha del POST.
     * No se comprueba el formato de la fecha.
     *
     * @param string $clave
     *
     * @return string
     */
    public static function getDate($clave)
    {
        /* Devuelve un string normal. El formato de fecha ha de ser
           comprobado desde afuera */
        /* ya que puede estar vacío */
        return ''.filter_input(INPUT_POST, $clave);
    }

    /**
     * Transforma un valor del POST formato SI/NO-YES/NO-Y/S-S/N-1/0 a
     * bool.
     * Devuelve -1 si no se puede convertir a true o false
     *
     * @param $clave
     *
     * @return bool
     */
    public static function getBool($clave)
    {
        return HelpConvert::toBool('' . filter_input( INPUT_POST, 
                                                      $clave));
    }

    /**
     * Devuelve una variable del POST como un array.
     *
     * @param string $clave
     *
     * @return array
     * @see validIsEmpty()
     */
    public static function getArray($clave)
    {
        $array_tmp = filter_input( INPUT_POST, 
                                   $clave, 
                                   FILTER_DEFAULT, 
                                   FILTER_REQUIRE_ARRAY);

        if (HelpValidate::isEmpty($array_tmp)) {

            /* Puede que sólo haya un valor, con lo que no es un array */
            $tmp = filter_input(INPUT_POST, $clave);

            if (HelpValidate::isEmpty($tmp)) {
                return [];
            }
            return [$tmp];
        }
        return $array_tmp;
    }
}