แนะนำตัว
ไวยากรณ์ของ ประกาศ คำสั่งใน PHP นั้นคล้ายกับโครงสร้างการควบคุมการไหลอื่นๆ เช่น while, for, foreach เป็นต้น
ไวยากรณ์
declare (directive) { statement1; statement2; . . }
พฤติกรรมของบล็อกถูกกำหนดตามประเภทของคำสั่ง มีคำสั่งสามประเภทในคำสั่งประกาศ - ติ๊ก , การเข้ารหัส และ strict_types คำสั่ง
คำสั่งติ๊ก
ขีดคือชื่อที่กำหนดให้กับเหตุการณ์พิเศษที่เกิดขึ้นคำสั่งจำนวนหนึ่งในสคริปต์จะถูกดำเนินการ คำสั่งเหล่านี้เป็นข้อความภายในของ PHP และหยาบเท่ากับคำสั่งในสคริปต์ของคุณ (ไม่รวมนิพจน์เงื่อนไขและอาร์กิวเมนต์ ฟังก์ชันใดๆ สามารถเชื่อมโยงกับเหตุการณ์ติ๊กได้โดย register_tick_function . ฟังก์ชันที่ลงทะเบียนจะดำเนินการหลังจากจำนวนขีดที่ระบุในคำสั่งประกาศ
ในตัวอย่างต่อไปนี้ myfunction() จะถูกดำเนินการทุกครั้งที่ลูปในโครงสร้างประกาศทำซ้ำ 5 ครั้ง
ตัวอย่าง
<?php function myfunction(){ echo "Hello World\n"; } register_tick_function("myfunction"); declare (ticks=5){ for ($i=1; $i<=10; $i++){ echo $i."\n"; } } ?>
ผลลัพธ์
ซึ่งจะให้ผลลัพธ์ต่อไปนี้เมื่อเรียกใช้สคริปต์ด้านบนจากบรรทัดคำสั่ง -
1 2 3 4 5 Hello World 6 7 8 9 10 Hello World
PHP ยังมี unregister_tick_function() เพื่อลบการเชื่อมโยงของฟังก์ชันกับเหตุการณ์ติ๊ก
คำสั่งที่เข้มงวด_ประเภท
PHP เป็นภาษาที่พิมพ์ไม่ค่อยดี พยายามแปลงประเภทข้อมูลให้เหมาะสมสำหรับการดำเนินการบางอย่าง หากมีฟังก์ชันที่มีอาร์กิวเมนต์จำนวนเต็มสองอาร์กิวเมนต์และส่งคืนการบวก และอาร์กิวเมนต์ใดอาร์กิวเมนต์ได้รับเป็น float ขณะเรียกใช้ PHP parser จะแปลง float เป็นจำนวนเต็มโดยอัตโนมัติ หากไม่ต้องการบังคับ เราสามารถระบุ strict_types=1 ในการประกาศสร้าง
ตัวอย่าง
<?php //strict_types is 0 by default function myfunction(int $x, int $y){ return $x+$y; } echo "total=" . myfunction(1.99, 2.99); ?>
พารามิเตอร์ลูกลอยถูกบังคับเป็นจำนวนเต็มเพื่อทำการบวกเพื่อให้ได้ผลลัพธ์ดังต่อไปนี้ -
ผลลัพธ์
total=3
อย่างไรก็ตาม การใช้ delcare construct ที่เข้มงวด_types=1 จะป้องกันการบีบบังคับ
ตัวอย่าง
<?php declare (strict_types=1); function myfunction(int $x, int $y){ return $x+$y; } echo "total=" . myfunction(1.99, 2.99); ?>
ผลลัพธ์
สิ่งนี้จะทำให้เกิดข้อผิดพลาดดังต่อไปนี้ -
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
คำสั่งการเข้ารหัส
โครงสร้างการประกาศมีคำสั่งการเข้ารหัสซึ่งเป็นไปได้ที่จะระบุรูปแบบการเข้ารหัสของสคริปต์
ตัวอย่าง
<?php declare(encoding='ISO-8859-1'); echo "This Script uses ISO-8859-1 encoding scheme"; ?>