Giới thiệu
TypeError lớp mở rộng Lỗi lớp. Lỗi này xuất hiện khi các loại đối số thực tế và chính thức không khớp, loại trả về không khớp với loại trả về được dán decal hoặc các đối số không hợp lệ được truyền cho bất kỳ hàm tích hợp nào
Lưu ý rằng nghiêm ngặt_types nên được đặt thành true với statement () chức năng ở đầu tập lệnh -
Trong ví dụ này, các loại biến đối số chính thức và thực tế không khớp nhau, dẫn đến TypeError .
Ví dụ
<?php function add(int $first, int $second){ echo "addition: " . $first + second; } try { add('first', 'second'); } catch (TypeError $e) { echo $e->getMessage(), "\n"; } ?>
Điều này sẽ tạo ra kết quả sau -
Đầu ra
Argument 1 passed to add() must be of the type integer, string given, called in C:\xampp\php\test.php on line 9
Trong ví dụ sau, hàm do người dùng xác định phải trả về dữ liệu số nguyên, thay vào đó nó trả về một mảng, gây ra TypeError
Ví dụ
<?php function myfunction(int $first, int $second): int{ return array($first,$second); } try { $val=myfunction(10, 20); echo "returned data : ". $val; } catch (TypeError $e) { echo $e->getMessage(), "\n"; } ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
Return value of myfunction() must be of the type integer, array returned
TypeError cũng được ném ra khi hàm tích hợp sẵn của PHP được truyền sai số đối số. Tuy nhiên, nghiêm ngặt_types =1 chỉ thị phải được thiết lập ngay từ đầu
Ví dụ
<?php declare(strict_types=1); try{ echo pow(100,2,3); } catch (TypeError $e) { echo $e->getMessage(), "\n"; } ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
pow() expects exactly 2 parameters, 3 given