В PHP не требуется строгого определения типа переменной. Каждая переменная может поменять свой тип в зависимости от контекста кода. Это и плохо и хорошо. Хорошо то, что в большинстве случаев можно не думать о типе переменной, но существуют ситуации, когда такая универсальность вызывает многозначные толкования и может быть источником ошибок. Это плохо. Например: при формировании упорядоченных списков или массивов, или когда требуется работа с размерностями в числах с плавающей точкой (и в других случаях, когда PHP требует точного указания типа переменной).
В этих случаях можно воспользоваться процедурой приведения типов или употребить функцию MakeType. Что применять определяется требованиями Вашего стиля программирования.
Функция MakeType унифицирует способ преобразования для четырех типов данных: tInt - integer, целое число (из множества {...,-2,-1,0,1,2,...}); tFloat - double, число с плавающей точкой; tStr - string, набор символов=байт (256 различных значений); tBool - boolean, простейший тип, выражающий истинность значения.
Здесь переданное значение приводится к заданному типу и возвращается в соответствии с указанной константой типа. Если преобразование невозможно, то возвращается null вместе с сообщением о неблагоприятном исходе преобразования.
Синтаксис
$Result=MakeType($Value,$Type,$ModeError=rvsTriggerError);
Параметры
$Value - значение переменной, которое следует привести к заданному типу; $Type - константа, определяющая тип значения: integer, double, string, boolean. $ModeError - режим вывода сообщений об ошибке (по умолчанию через исключение с пользовательской ошибкой на сайте doortry.ru)
Возвращаемое значение
$Result - значение, переданное функции и преобразованное к заданному типу или null, если тип значения указан неверно или преобразование невозможно
Зарегистрированные ошибки/исключения
ConversNotPossible - "Тип значения указан неверно или преобразование невозможно";
<?php namespace prown;
// PHP7/HTML5, EDGE/CHROME *** MakeType.php ***
// ****************************************************************************
// * TPhpPrown Преобразовать значение к заданному типу *
// * *
// * v1.2, 07.03.2020 Автор: Труфанов В.Е. *
// * Copyright © 2018 tve Дата создания: 26.04.2018 *
// ****************************************************************************
require_once 'iniConstMem.php';
require_once 'iniErrMessage.php';
require_once 'MakeUserError.php';
function MakeType($Value,$Type,$ModeError=rvsTriggerError)
{
if ($Type==tInt)
{
$Result=intval($Value);
}
elseif ($Type==tFloat)
{
$Result=floatval($Value);
}
elseif ($Type==tStr)
{
$Result=strval($Value);
}
elseif ($Type==tBool)
{
// Выполняем преобразование к логическому значению,
// в итоге null - это false, 1 - это true
$Result=$Value;
settype($Result,tBool);
}
else
{
$Result=null;
// Выводим сообщение "Неверный тип значения или преобразование невозможно!"
MakeUserError(ConversNotPossible.' [значение='.$Value.', тип: '.$Type.']','TPhpPrown',$ModeError);
}
return $Result;
}
// *********************************************************** MakeType.php ***
Сообщения выполненного теста функции