В предыдущей статье я написал класс для очистки данных получаемых из формы. И был вроде бы доволен, но как только закончил тут же усомнился в том что сделал.
Понял, что не учёл целую кучу моментов. Теперь решил исправить собственный код. В результате он сильно вырос, а я получил новый опыт. В результате класс получился намного больше, но зато теперь я могу работать с разными типами данных.
Теперь я учитываю не только строковые типы данных, но и целые числа и числа с плавающей точкой и даже 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;
}
}
Кажется теперь у меня получается думать не только в контексте текущей задачи, но и в контексте будующих задач.
Продолжение следует…