182 lines
4 KiB
PHP
182 lines
4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Преобразование типов !!! Пересмотреть использование классов!!
|
|
* Класс преобразования типа значения поля класса в тип поля таблицы
|
|
*/
|
|
|
|
namespace ctiso;
|
|
|
|
class Primitive {
|
|
/**
|
|
* @param mixed $value
|
|
*/
|
|
public static function to_varchar($value): string
|
|
{
|
|
return ((string) $value);
|
|
}
|
|
|
|
/**
|
|
* @param mixed $value
|
|
* @return mixed
|
|
*/
|
|
public static function from_varchar($value)
|
|
{
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $value
|
|
*/
|
|
public static function to_bool($value): bool
|
|
{
|
|
return filter_var($value, FILTER_VALIDATE_BOOLEAN);
|
|
}
|
|
|
|
/**
|
|
* Преобразование значения в булевое значение
|
|
* @param string $value
|
|
* @return bool
|
|
*/
|
|
public static function from_bool($value): bool
|
|
{
|
|
return ((bool) $value);
|
|
}
|
|
|
|
/**
|
|
* Преобразование значения в целое число
|
|
* @param string $value
|
|
* @return int
|
|
*/
|
|
public static function to_int($value): int
|
|
{
|
|
return ((int) $value);
|
|
}
|
|
|
|
/**
|
|
* @param mixed $value
|
|
*/
|
|
public static function from_int($value): string
|
|
{
|
|
return ((string) $value);
|
|
}
|
|
|
|
/**
|
|
* Преобразование даты dd/mm/yy в unix timestamp
|
|
* @param string $value
|
|
* @return int
|
|
*/
|
|
public static function to_date($value): int
|
|
{
|
|
$result = 0;
|
|
$tmp = explode("/", $value ?? '', 3);
|
|
|
|
if (count($tmp) != 3) {
|
|
return $result;
|
|
}
|
|
|
|
$year = (int)$tmp[2];
|
|
$month = (int)$tmp[1];
|
|
$day = (int)$tmp[0];
|
|
|
|
if ($month != 0 && $day != 0 && $year != 0) {
|
|
if (checkdate($month, $day, $year)) {
|
|
return mktime(0, 0, 0, $month, $day, $year) ?: 0;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Преобразование даты ISO 8601 в unix timestamp
|
|
* @param string $value
|
|
* @return int
|
|
*/
|
|
public static function to_datetime($value): int
|
|
{
|
|
$result = 0;
|
|
|
|
$tmp = [];
|
|
if (preg_match('/(\d+)-(\d+)-(\d+)T(\d+):(\d+)Z/', $value, $tmp)) {
|
|
if (checkdate((int)$tmp[2], (int)$tmp[3], (int)$tmp[1])) {
|
|
$result = mktime((int)$tmp[4], (int)$tmp[5], 0, (int)$tmp[2], (int)$tmp[3], (int)$tmp[1]) ?: 0;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Преобразование даты в формат dd/mm/yyyy
|
|
* @param int $value
|
|
* @return string
|
|
*/
|
|
public static function from_date($value): string
|
|
{
|
|
if ($value > 0) {
|
|
return date("d/m/Y", $value);
|
|
}
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Преобразование даты в формат ISO 8601
|
|
* @param int $value
|
|
* @return string
|
|
*/
|
|
public static function from_datetime($value): string
|
|
{
|
|
if ($value > 0) {
|
|
return date("Y-m-d\TH:i\Z", $value);
|
|
}
|
|
return '';
|
|
}
|
|
|
|
|
|
/**
|
|
* @deprecated
|
|
* @template T
|
|
* @param T $value
|
|
* @return T
|
|
*/
|
|
public static function to_secure($value)
|
|
{
|
|
// Значение приабразуется во время сохранения в базе данных
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* @deprecated
|
|
* @template T
|
|
* @param T $value
|
|
* @return T
|
|
*/
|
|
public static function from_secure($value)
|
|
{
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* Преобразование значения в массив
|
|
* @param mixed $value
|
|
* @return array
|
|
*/
|
|
public static function to_array($value)
|
|
{
|
|
return (is_array($value)) ? $value : [];
|
|
}
|
|
|
|
/**
|
|
* @deprecated
|
|
* @template T
|
|
* @param T $value
|
|
* @return T
|
|
*/
|
|
public static function from_array($value)
|
|
{
|
|
return $value;
|
|
}
|
|
}
|
|
|