Проверьте, соответствует ли переменная определению типа в строкеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проверьте, соответствует ли переменная определению типа в строке

Сообщение Anonymous »

Есть ли способ проверить, соответствует ли $var типу, определенному в строке, отличной от этой:

Код: Выделить всё

function test_type(mixed $value, string $type): bool
{
try {
eval('(fn('.$type.' $a)=>true)($value);');
return true;
}
catch (Throwable  $e) {
return false;
}
}
test_type(null,  "int") ; // returns false.
test_type(null,  "?int") ; // return true.
test_type("hello, world", "bool") ; // returns true. I want it to return false
test_type(new DateTime, "DateTimeInterface") ; // return true.
test_type(new DateTime, "null|int|DateTime|DateTimeImmutable") ; // return true
У этого подхода есть две основные проблемы, которые не требуют дальнейшего объяснения:
  • eval
  • автоматическое преобразование типов (как в test_type("hello, world", "bool") => true )
Есть ли способ избежать этих проблем? Я много гуглил, но пока ничего не нашел.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»