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

พิมพ์คำใบ้ในภาษา PHP 7


PHP 7 ใช้การบอกใบ้สองประเภทในการประกาศประเภทสเกลาร์และการประกาศประเภทการส่งคืน -

  • คำใบ้ประเภทที่อ่อนแอ
  • คำใบ้แบบเคร่งครัด

คำใบ้ประเภทที่อ่อนแอ

ตามค่าเริ่มต้น PHP 7 ทำงานในโหมดการตรวจสอบประเภทที่อ่อนแอ การตรวจสอบประเภทที่อ่อนแอจะไม่ทำให้เกิดข้อผิดพลาดหรือข้อผิดพลาดร้ายแรง เมื่อการประกาศประเภทไม่ตรงกันเกิดขึ้น ก็จะเรียกใช้โค้ดโดยไม่ทำให้เกิดข้อผิดพลาด

โดยการใช้ strict_typesdeclare() เราสามารถควบคุมการตรวจสอบประเภทที่อ่อนแอได้

declare(strict_types=0);//การตรวจสอบประเภทที่อ่อนแอ; เราควรตั้งค่าที่เข้มงวด =0

คำใบ้ประเภทที่อ่อนแอ ตัวอย่างที่ 1

<ก่อน>

ผลลัพธ์

โค้ดจะสร้างผลลัพธ์ต่อไปนี้ -

30

คำอธิบาย

ในตัวอย่างข้างต้น เราไม่ได้ใช้ค่าที่เข้มงวดสำหรับพารามิเตอร์ เราใช้ตัวแปรจำนวนเต็มสองตัวคือ x และ y สำหรับ x=10 และ y กำลังใช้เลขทศนิยม 20.20 แต่ y จะไม่สร้างข้อผิดพลาดใดๆ มันจะให้ค่าจำนวนเต็มเอาท์พุต 30

ตัวอย่างที่ 2

ผลลัพธ์

ผลลัพธ์สำหรับโปรแกรมข้างต้นจะเป็น −

int(9)

คำใบ้แบบเข้มงวด

การบอกใบ้ประเภทที่เข้มงวดจะทำให้เกิดข้อผิดพลาดร้ายแรงเมื่อการประกาศประเภทไม่ตรงกันเกิดขึ้น เราสามารถพูดได้ว่าการบอกใบ้แบบเข้มงวดยอมรับตัวแปรประเภทที่แน่นอนของการประกาศประเภท มิฉะนั้นจะทำให้ TypeError ไม่ตรงกัน

ในการบอกใบ้แบบเข้มงวด คำสั่งแรกในไฟล์ต้องได้รับการประกาศ (strict_types=1) ไม่เช่นนั้นจะทำให้เกิดข้อผิดพลาดของคอมไพเลอร์ ไม่มีผลกับไฟล์อื่นๆ ที่รวมอยู่ซึ่งไม่ได้ระบุไว้ในไฟล์ ซึ่งหมายความว่ามีผลกับไฟล์เฉพาะที่ใช้เท่านั้น

คำสั่งบอกใบ้แบบเข้มงวดเป็นเวลาคอมไพล์อย่างสมบูรณ์และไม่สามารถควบคุมได้ในขณะใช้งานจริง

คำใบ้แบบเข้มงวด ตัวอย่างที่ 1

ผลลัพธ์

โปรแกรมบอกใบ้แบบเข้มงวดด้านบนจะเป็น −

float(5.2) ข้อผิดพลาดร้ายแรง:Uncaught TypeError:อาร์กิวเมนต์ 2 ส่งผ่านไปยัง returnadd() ต้องเป็นประเภท float สตริงที่กำหนด เรียกใน C:\xampp\htdocs\gud.php ในบรรทัดที่ 7 และกำหนดไว้ใน C:\xampp\htdocs\gud.php:3 Stack trace:#0 C:\xampp\htdocs\gud.php(7):returnadd(3, '2 days') #1 {main} ถูกส่งออกไปใน C:\xampp\ htdocs\gud.php ในบรรทัดที่ 3

คำใบ้แบบเข้มงวด ตัวอย่างที่ 2

มันจะสร้างผลลัพธ์ “ข้อผิดพลาดร้ายแรง”

ในตัวอย่างการประกาศประเภทที่เข้มงวดข้างต้น หากเราประกาศค่าเข้มงวด_type คือ 1 โค้ดจะให้ผลลัพธ์ "ข้อผิดพลาดร้ายแรง:Uncaught TypeError:อาร์กิวเมนต์ 1 ที่ส่งไปยัง add() ต้องเป็นประเภท int , สตริงจะได้รับ”.