#php #php-7
#php #php-7
Вопрос:
Я хочу использовать int только для суммы в $, но иногда я получаю double, поэтому я проверяю, является ли его int. Есть ли лучший способ сделать это? Моя проблема в том, что другой класс отправляет ему данные, и я хочу предотвратить, чтобы они не отправляли какой-либо тип .. возможно ли это?
мой код:
function finTrian($amount, $source, $trian, $realTrian, $pos = -1)
{
if(!is_int($amount))
return;
if($amount < $requiredAmount)
return "E-1019";
$totalTrian = ($trian * $realTrian) / self::T_FACTOR;
…
}
?>
У меня действительно возникли проблемы с этим, иногда приложение работает некорректно, и мне нужно найти проблему. Может кто-нибудь, пожалуйста, помочь мне с этим?
Спасибо!!!
Комментарии:
1. да, сэр, я использую php-7
Ответ №1:
Да, это возможно сделать..
Просто измените свой код, как показано ниже:
От:
function finTrian($amount, $source, $trian, $realTrian, $pos = -1)
{
if(!is_int($amount))
return;
if($amount < $requiredAmount)
return "E-1019";
Для:
function finTrian(int $amount, $source, $trian, $realTrian, $pos = -1)
{
if($amount < $requiredAmount)
return "E-1019";
параметр $amount будет преобразован в int, если это возможно. @Eiko
Типы были добавлены в php 7:
bool PHP 7.0.0
float PHP 7.0.0
int PHP 7.0.0
string PHP 7.0.0
Комментарии:
1. Это будет работать только в php 7, тип int также добавляется в php 7
2. Спасибо вам обоим, Vural Acar, и не паникуйте, это просто очаровательная работа!!! Как я это пропустил…
3. Это не выполняет проверку типа. Он выполняет приведение! Таким образом, он не обеспечивает вызов функции с другими типами данных.
4. Правильно, спасибо, Эйко, на самом деле это было не то, что я улучшил.
Ответ №2:
Нет, нет способа избавиться от проверки типа.
Если вы укажете тип в функции, как в другом ответе:
function finTrian(int $amount, $source, $trian, $realTrian, $pos = -1) { ... }
$amount
параметр будет преобразован в int, если это возможно.
Поэтому вызов его с $amount = 3.8
помощью просто вызовет функцию с finTrian(3, ...)
Примечание: он будет приведен к 3, а не к 4. Это принципиально отличается от проверки типа, которую вы имели в своем вопросе!
Комментарии:
1. @Don’T Panic Хороший улов. Действительно ли это использует кого-либо (последовательно)?
2. Не уверен, но я рад, что он есть. В противном случае объявления типов были бы не так полезны, IMO.