@ อักขระก่อนการเรียกใช้ฟังก์ชัน


135

อะไรคือความแตกต่างระหว่างการเรียกใช้ฟังก์ชันทั้งสองนี้ใน PHP?

init_get($somevariable);

@init_get($somevariable);

"@" จะปิดข้อผิดพลาดและประกาศเกี่ยวกับ php
Erkan Özkök

คำตอบ:


210

"@" จะปิดเสียงข้อผิดพลาด php ที่ฟังก์ชันของคุณอาจเพิ่มขึ้น


แต่ถ้าคุณวางไว้@หน้าtrigger_errorฟังก์ชันของ PHP ล่ะ? ฉันได้เห็นสิ่งนั้นในบางรหัส แต่พฤติกรรมของมันไม่สอดคล้องกันสำหรับฉันจนถึงตอนนี้ ในบางกรณีฉันเห็นข้อผิดพลาดถูกรายงานโดยตัวจัดการข้อผิดพลาดที่กำหนดค่าไว้และในกรณีอื่น ๆ ดูเหมือนว่าจะได้รับการรายงาน
fritzmg

2
@จะตั้งชั่วคราวerror_reportingให้เป็น 0 แต่จะไม่ "ปราบ" ข้อผิดพลาด
solidgum โดย

49

มันปิดเสียงข้อผิดพลาดและคำเตือน ดูข้อผิดพลาดของผู้ประกอบการควบคุม


36

ตามที่ตอบไปแล้ว@จะหยุดข้อผิดพลาด (ถ้ามี) ไม่ให้แสดงขึ้น
ในแง่ของประสิทธิภาพนี้ไม่แนะนำ

สิ่งที่ php กำลังทำคือ:

  • อ่านสถานะการแสดงข้อผิดพลาด
  • ตั้งค่าการแสดงข้อผิดพลาดไม่ให้แสดงข้อผิดพลาด
  • เรียกใช้ฟังก์ชันของคุณ
  • การตั้งค่าการแสดงข้อผิดพลาดเป็นสถานะก่อนหน้า

หากคุณไม่ต้องการให้มีข้อผิดพลาดใด ๆ แสดงขึ้นมาใช้ error_reporting(0);ที่แสดงให้เห็นถึงการใช้งาน

หรือแค่เขียนโค้ด bug free: P


ชอบใส่ศูนย์ แต่ถ้าได้ผลดีก็ไม่รู้ :)
AntonioCS

1
แล้วฟังก์ชันที่คุณไม่ได้ควบคุมเช่นจดหมายล่ะ? มีตัวเลือกอื่นใดบ้าง ตอนนี้ฉันใช้ @ แต่จะดีมากที่สามารถทำในลักษณะที่แตกต่างออกไป
spuas


6

อย่างที่ทุกคนกล่าวมันจะหยุดผลลัพธ์ของข้อผิดพลาดสำหรับฟังก์ชันนั้น อย่างไรก็ตามสิ่งนี้จะลดประสิทธิภาพลงอย่างมากเนื่องจากต้องเปลี่ยนการตั้งค่าการแสดงข้อผิดพลาดสองครั้ง ฉันขอแนะนำว่าอย่าเพิกเฉยต่อคำเตือนหรือข้อผิดพลาดและแก้ไขโค้ดแทน


ขอบคุณทุกคนสำหรับคำตอบของคุณ รหัสนั้นไม่ใช่ของฉันฉันแค่ดูรหัส phpBB เพื่อความอยากรู้เท่านั้นดังนั้นฉันจึงไม่มีปัญหาเรื่องประสิทธิภาพ :) ขอบคุณอีกครั้ง.
nixie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.