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 và 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"; ?>