Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP ประกาศงบ


แนะนำตัว

ไวยากรณ์ของ ประกาศ คำสั่งใน 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";
?>