Как поймать PHP "Неустранимая ошибка: Uncaught TypeError" - PullRequest
0 голосов
/ 17 ноября 2018

Я экспериментирую с подсказкой типа PHP7.Следующий код дает «фатальную ошибку».Я попробовал несколько методов безрезультатно.Это работает хорошо, когда я даю значение int.Но если я даю строку, она падает.Как я могу поймать ошибку типа без сбоя моей страницы.Код:

<?php 

    class Book{
            public $price;
            public function price(int $price){
                if (is_numeric($price)){
                echo 'This is Number ' . $price;
                }else{
                    echo 'Please enter number';
                } 
            }
        }

    $book = new Book();
    $book->price('Hello');

?>

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Вот как работает хинтинг типа.Если вы скажете PHP ожидать значение int для параметра и передадите ему значение, которое не является целым числом, вы получите исключение TypeError.См. Руководство .

. Вы можете реализовать свой код немного по-другому с помощью блока try / catch:

try {
    $book->price('Hello');
}
catch (TypeError $e) {
    echo 'Please enter number';
}

В этом случае вы можете упростить функцию priceдо:

public function price(int $price){
    echo 'This is Number ' . $price;
}
0 голосов
/ 17 ноября 2018

Вы устанавливаете функцию для принятия int, поэтому вы не можете присвоить ей строку, попробуйте этот код.

удалите int из параметров функции

class Book{
        public $price;
        public function price($price){
            if (is_numeric($price)){
            echo 'This is Number ' . $price;
            }else{
                echo 'Please enter number';
            } 
        }
    }

$book = new Book();
$book->price('hello');
...