Строка в Int будет выбрасывать вместо возврата 0 - PullRequest
0 голосов
/ 05 марта 2020

Если я приведу строку с intval('string') или с (int) 'string' и если эта строка содержит буквы, отличные от цифр, я получу int 0 в качестве результата.

Есть ли способ, с помощью которого генерируется перехватываемое исключение, благодаря которому я могу проверить, что преобразование прошло успешно, так что пользователь не может случайно ввести 1O вместо 10?

Также есть ли способ проверить наличие поплавка?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Использование preg_match("/\D/", 'string') будет работать для этого. Эта функция ищет определенный шаблон в строке и возвращает true, если она находит шаблон, и false, если этого не происходит.

Разделитель \ D проверяет наличие нецифровых чисел, таких как 0, а прямые косые черты для открытия и закрытия секции разделителя.

Итак, так как он вернет true, когда найдет не-di git значение, вы должны будете выбросить ошибку или вернуться рано из вашей программы, когда она вернется. правда. Когда это ложь, все в порядке

0 голосов
/ 05 марта 2020
class Number {
private $value;

public function __construct($value) {
    $this->setValue($value);
}

public function getValue(): float {
    return $this->value;
}

public function getIntValue(): int {
    return intval($this->value);
}

public function setValue($value) {
    if (!is_numeric($value)) {
        throw new Exception("$value is not nummeric");
    }
    $this->value;
} }
...