В предыдущей статье я написал класс для очистки данных получаемых из формы. И был вроде бы доволен, но как только закончил тут же усомнился в том что сделал.

Понял, что не учёл целую кучу моментов. Теперь решил исправить собственный код. В результате он сильно вырос, а я получил новый опыт. В результате класс получился намного больше, но зато теперь я могу работать с разными типами данных.

Теперь я учитываю не только строковые типы данных, но и целые числа и числа с плавающей точкой и даже Html.

Все функции я сделал статическими для удобства вызова.

<?php

class DataCleaner
{
    /**
     * @return int
     * Целое число
     */

    public static function cleanInt($data, $default = 0) :int
    {

        $data = trim($data);
        $data = (int) $data;
        
        if (is_int($data)) {
            return $data;
        }

        return $default;

    }

    /**
     * @return Array
     * Массив с целыми числами
     */

    public static function cleanIntArray($data) :array
    {
        $array = [];

        foreach($data as $int) {
            $array[] = self::cleanInt($int);
        }

        return $array;
    }

    /**
     * @return float
     * Число с плавающей точкой
     */

    public static function cleanFloat($data, $default = 0) :float
    {
        $data = trim($data);
        $data = (float) $data;

        if (is_float($data)) {
            return $data;
        }

        return $default;
    }

    /**
     * @return Array float
     * Массив чисел с плавающей точкой
     */

    public static function cleanFloatArray($data) :array
    {
        $array = [];

        foreach($data as $float) {
            $array[] = self::cleanFloat($float);
        }

        return $array;
    }

    /**
     * @return string
     * Строка
     */

    public static function cleanString($data)
    {
        $data = trim($data);
        $data = strip_tags($data);
        $data = htmlspecialchars($data);

        return $data;
    }

    /**
     * @return array
     * Массив со строками
     */

    public static function cleanStringArray($data) :array
    {
        $array = [];

        foreach($data as $string) {
            $array[] = self::cleanString($string);
        }

        return $array;
    }

    /**
     * @return html
     * Html
     */

    public static function cleanHtml($data) :string
    {
        $data = trim($data);
        $data = addslashes($data);
        $data = htmlspecialchars($data);

        return $data;
    }
}

Кажется теперь у меня получается думать не только в контексте текущей задачи, но и в контексте будующих задач.

Продолжение следует…