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

Tuyên bố khai báo PHP

Giới thiệu

Cú pháp của khai báo câu lệnh trong PHP tương tự như các cấu trúc điều khiển luồng khác như while, for, foreach, v.v.

Cú pháp

declare (directive)
{
   statement1;
   statement2;
   . .
}

Hành vi của khối được xác định theo loại chỉ thị. Ba loại lệnh có thể được cung cấp trong câu lệnh tuyên bố - tick , mã hóa nghiêm ngặt_types chỉ thị.

chỉ thị đánh dấu

Đánh dấu là tên được đặt cho sự kiện đặc biệt xảy ra một số câu lệnh nhất định trong tập lệnh được thực thi. Các câu lệnh này là nội bộ của PHP và tương đương với các câu lệnh trong tập lệnh của bạn (không bao gồm các biểu thức điều kiện và đối số. Bất kỳ hàm nào cũng có thể được liên kết với sự kiện đánh dấu bằng register_tick_ Chức năng . Chức năng đã đăng ký sẽ được thực thi sau số lần đánh dấu xác định trong chỉ thị khai báo.

Trong ví dụ dưới đây, my function () được thực thi mỗi khi vòng lặp trong cấu trúc khai báo hoàn thành 5 lần lặp.

Ví dụ

<?php
function myfunction(){
   echo "Hello World\n";
}
register_tick_function("myfunction");
declare (ticks=5){
   for ($i=1; $i<=10; $i++){
      echo $i."\n";
   }
}
?>

Đầu ra

Điều này sẽ tạo ra kết quả sau khi tập lệnh trên được chạy từ dòng lệnh -

1
2
3
4
5
Hello World
6
7
8
9
10
Hello World

PHP cũng có unregister_tick_ precision () để loại bỏ liên kết của một hàm với sự kiện đánh dấu

nghiêm ngặt_types chỉ thị

PHP là một ngôn ngữ được đánh máy yếu, cố gắng chuyển đổi một kiểu dữ liệu phù hợp để thực hiện một hoạt động nhất định. Nếu có một hàm có hai đối số là số nguyên và trả về phép cộng của chúng và một trong hai đối số được đưa ra dưới dạng float trong khi gọi nó, trình phân tích cú pháp PHP sẽ tự động chuyển đổi float thành số nguyên. Nếu việc ép buộc này không được mong muốn, chúng tôi có thể chỉ định precision_types =1 trong khai báo cấu trúc

Ví dụ

<?php
//strict_types is 0 by default
function myfunction(int $x, int $y){
   return $x+$y;
}
echo "total=" . myfunction(1.99, 2.99);
?>

Tham số float được ép buộc ở dạng số nguyên để thực hiện phép cộng để đưa ra kết quả sau -

Đầu ra

total=3

Tuy nhiên, việc sử dụng cấu trúc delcare với precision_types =1 ngăn cản việc ép buộc

Ví dụ

<?php
declare (strict_types=1);
function myfunction(int $x, int $y){
   return $x+$y;
}
echo "total=" . myfunction(1.99, 2.99);
?>

Đầu ra

Điều này sẽ tạo ra lỗi sau -

Fatal error: Uncaught TypeError: Argument 1 passed to myfunction() must be of the type integer, float given, called in line 7 and defined in C:\xampp\php\testscript.php:3

Chỉ thị mã hóa

Cấu trúc khai báo có chỉ thị Mã hóa mà có thể chỉ định lược đồ mã hóa của tập lệnh

Ví dụ

<?php
declare(encoding='ISO-8859-1');
echo "This Script uses ISO-8859-1 encoding scheme";
?>