Computer >> Máy Tính >  >> Lập trình >> PHP

Gõ Hinting trong PHP 7


PHP 7 sử dụng hai kiểu gợi ý trong khai báo kiểu vô hướng và khai báo kiểu trả về -

  • Gợi ý loại yếu
  • Gợi ý về loại nghiêm ngặt

Gợi ý loại yếu

Theo mặc định, PHP 7 hoạt động ở chế độ kiểm tra kiểu yếu, việc kiểm tra kiểu yếu sẽ không đưa ra bất kỳ lỗi nào hoặc lỗi nghiêm trọng.

Bằng cách sử dụng nghiêm ngặt_typesdeclare (), chúng tôi có thể kiểm soát việc kiểm tra kiểu yếu.

declare(strict_types=0);
//weak type-checking; we should set the strict value = 0

Gợi ý loại yếu Ví dụ 1

<?php
   $x=10; // integer variable x =10 value
   $y=20.20; // using floating point number y=20.20 value
   function add(int $x, int $y){
      return $x + $y;
   }
   echo add($x, $y);
?>

Đầu ra

Mã sẽ tạo ra kết quả sau -

30

Giải thích

Trong ví dụ trên, chúng tôi không sử dụng giá trị nghiêm ngặt cho một tham số. Chúng tôi đã sử dụng hai biến số nguyên, x và y. Đối với x =10 và y đang sử dụng số thực 20.20, nhưng y sẽ không tạo ra bất kỳ lỗi nào; nó sẽ chỉ đơn giản là cung cấp giá trị số nguyên đầu ra 30.

Ví dụ 2

<?php
   function returnadd(int ...$integers){
      return array_sum($integers);
   }
   var_dump(returnadd(2, '3', 4.1));
?>

Đầu ra

Kết quả của chương trình trên sẽ là -

int(9)

Gợi ý loại nghiêm ngặt

Gợi ý kiểu nghiêm ngặt sẽ gây ra Lỗi nghiêm trọng khi xảy ra sai sót trong khai báo kiểu. Chúng ta có thể nói rằng gợi ý kiểu nghiêm ngặt chấp nhận một biến có kiểu chính xác của khai báo kiểu, nếu không, nó sẽ tạo ra kiểu không khớp TypeError.

Trong gợi ý kiểu nghiêm ngặt, câu lệnh đầu tiên trong tệp phải được khai báo (nghiêm ngặt_types =1), nếu không, nó sẽ tạo ra lỗi trình biên dịch. Nó không ảnh hưởng đến các tệp bao gồm khác không được chỉ định trong tệp, có nghĩa là nó chỉ ảnh hưởng đến tệp cụ thể mà nó được sử dụng.

Chỉ thị gợi ý loại nghiêm ngặt là hoàn toàn trong thời gian biên dịch và không thể được kiểm soát trong thời gian chạy.

Gợi ý loại nghiêm ngặt Ví dụ 1

<?php
   declare (strict_types=1);
   function returnadd(float $x , float $y){
      return $x+$y;
   }
   var_dump(returnadd(3.1,2.1)); //output float(5.2)
   var_dump(returnadd(3, "2 days")); //fatal error
?>

Đầu ra

Chương trình gợi ý loại nghiêm ngặt ở trên sẽ là -

float(5.2)
Fatal error: Uncaught TypeError: Argument 2 passed to returnadd() must be of the type float, string given, called in C:\xampp\htdocs\gud.php on line 7 and defined in C:\xampp\htdocs\gud.php:3 Stack trace: #0 C:\xampp\htdocs\gud.php(7): returnadd(3, '2 days') #1 {main} thrown in C:\xampp\htdocs\gud.php on line 3

Gợi ý loại nghiêm ngặt Ví dụ 2

<?php
   declare(strict_types=1); // strict mode checking
   $x='1'; // string
   $y=20; //integer number
   function add(int $x, int $y){
      return $x + $y;
   }
   var_dump(add($x, $y));
?>

Nó sẽ tạo ra "lỗi nghiêm trọng"

Trong ví dụ khai báo kiểu nghiêm ngặt ở trên, nếu chúng ta khai báo giá trị kiểu nghiêm ngặt là 1, đoạn mã sẽ đưa ra kết quả là "Lỗi nghiêm trọng:Không có kiểu gì Lỗi:Đối số 1 được truyền vào add () phải có kiểu int , một chuỗi được đưa ra ”.