ใน stackoverflow ฉันเห็นปัญหานี้หมดไปตลอดเวลา:
- E_NOTICE? == E_DEBUG หลีกเลี่ยง isset () และ @ พร้อม error_handler ที่ซับซ้อนยิ่งขึ้น
- วิธีการตั้งค่า PHP ไม่ให้ตรวจสอบการเลิกค้นหาดัชนีสำหรับ $ _GET เมื่อ E_NOTICE เปิดอยู่
- วิธีหยุด PHP จากการบันทึกข้อผิดพลาด PHP Notice
- ฉันจะปิดประกาศ PHP 5.3 ดังกล่าวได้อย่างไร
แม้แต่Pekka (ผู้ที่ให้คำแนะนำ PHP ที่เป็นของแข็งจำนวนมาก) ก็เจอกับE_NOTICE
สัตว์ประหลาดที่หวั่นกลัวและหวังว่าจะได้ทางออกที่ดีกว่าการใช้isset()
: isset () และเปล่า () ทำให้โค้ดน่าเกลียด
โดยส่วนตัวแล้วฉันใช้isset()
และempty()
ในหลาย ๆ ที่เพื่อจัดการการไหลของแอปพลิเคชันของฉัน ตัวอย่างเช่น:
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
แม้แต่ตัวอย่างง่ายๆเช่นนี้:
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
ดูเหมือนว่าฉันมีเหตุผลมาก ดูเหมือนว่ามันจะไม่บวมดูเหมือนรหัสที่เสถียร แต่จำนวนมากของนักพัฒนาไฟขึ้นการใช้งานของพวกเขาด้วยE_NOTICE
's เปิดใช้งานการค้นพบจำนวนมากที่น่าผิดหวัง 'ดัชนีอาร์เรย์เตรียม' ประกาศแล้วแสยะที่คาดหมายของการตรวจสอบสำหรับตัวแปรที่กำหนดไว้และ 'เกลื่อน' isset()
รหัสของพวกเขาด้วย
ฉันถือว่าภาษาอื่นจัดการสิ่งต่าง ๆ เมื่อพูดถึงประสบการณ์ JavaScript จะไม่สุภาพเท่า PHP โดยทั่วไปแล้วตัวแปรที่ไม่ได้กำหนดจะหยุดการทำงานของสคริปต์ นอกจากนี้ยังพูดจากไม่มีประสบการณ์ ) ฉันแน่ใจว่าภาษาเช่น C / C ++ จะปฏิเสธที่จะรวบรวม
ดังนั้น PHP devs ขี้เกียจแค่ไหน? (ไม่ได้พูดถึงคุณ Pekka ฉันรู้ว่าคุณกำลัง refactoring แอปพลิเคชันเก่า) หรือว่าภาษาอื่น ๆ จัดการกับตัวแปรที่ไม่ได้กำหนดอย่างสง่างามมากกว่าที่ต้องการให้โปรแกรมเมอร์ตรวจสอบก่อนว่าพวกเขาถูกกำหนดหรือไม่?
(ฉันรู้ว่ามีE_NOTICE
ข้อความอื่นนอกเหนือจากตัวแปรที่ไม่ได้กำหนด แต่ดูเหมือนว่าจะเป็นข้อความที่ทำให้เกิดความผิดหวังมากที่สุด)
ภาคผนวก
จากคำตอบจนถึงตอนนี้ฉันไม่ใช่คนเดียวที่คิดว่าisset()
ไม่ใช่รหัสที่ขยายตัว ดังนั้นฉันสงสัยว่าตอนนี้มีปัญหากับโปรแกรมเมอร์ในภาษาอื่นที่สะท้อนสิ่งนี้หรือไม่? หรือนี่เป็นเพียงปัญหาทางวัฒนธรรมของ PHP เท่านั้น?