เปรียบเทียบ include() require() include_once() require_once() และ virtual()
หน้าแรก PHP MySQL เกร็ดความรู้ เปรียบเทียบ include() require() include_once() require_once() และ virtual()
ใครหลาย ๆ คน ยังคงสับสนอยู่กับ การใช้งานฟังก์ชัน หากเราสามารถเลือกใช้งานตัว ฟังก์ชันที่ถูกต้องจะทำให้สามารถใช้งานได้ง่าย เร็ว ถูกต้อง และมี
ประสิทธิภาพมากยิ่งขึ้น
บทนำ
ก่อนอื่นถ้าท่านใดที่ไม่เคยใช้ฟังก์ชันเหล่านี้มาก่อน ผมก็ขออธิบายก่อนว่ามันเหมือนกันยังไง:
Include() Require() Include_once() และ Virtual() ล้วนแล้วแต่เป็นฟังก์ชั่นที่มาร้อมกับ PHP และก็ทำงานคล้าย ๆ กัน ซึ่งหลาย
คน ๆ คนอาจจะไม่ทราบว่าแตกต่างกันอย่างไร ก็เลยใช้สลับไปมา ที่ผู้คนทราบกันนั้น ก็คือว่า ฟังก์ชั่นทั้ง 5 นี้ เป็นการเรียกไฟล์อื่นเข้ามาร่วมกับสคริปต์
เช่น
| Code |
| include('http://localhost/test.php'); include_once('http://localhost/test.php'); require('http://localhost/test.php'); require_once('http://localhost/test.php'); vitual('http://localhost/test.php'); |
ซี่งผลลัพท์โดยปกติจะออกมาเหมือนกัน
ความแตกต่าง
Include() : ฟังก์ชั่นนี้ถ้าเกิด Error ขึ้น เช่นเมื่อไม่พบไฟล์ที่ต้องการ มันจะแสดงข้อความผิดพลาดเป็นแบบ Warning ซึ่งหมายความ
ว่ามันจะแสดงข้อความผิดพลาดขึ้นบนหน้าจอ เฉย ๆ แต่สคริปต์จะข้ามมันไป แล้วยังคงทำงานต่อไปได้
Require() : อันนี้เมื่อเกิดข้อผิดพลาดขึ้น ตัว PHP จะแสดงข้อความขึ้นเป็น Fatal Error ซึ่งก็หมายความว่า เมื่อมันพบปัญหา มันก็
จะขึ้นข้อความผิดพลาด แล้วจบการทำงาาน ทันที
Include_once() : สำหรับตัวนี้ จะเป็นการทำงานที่เหมือน include() เพียงแต่ว่า มันจะเรียกเข้ามาครั้งเดียวเท่านั้น สมมุติว่าเราใส่
Include_once() ไว้ใน Loop แล้วให้มันใช้ฟังก์ชั่นนี้ซ้ำ ๆ มันจะเรียกไฟล์มาครั้งเดียวเท่านั้น
Require_once() : ตัวนี้เหมือน ๆ กับ include_once() ผสมกัน คือการทำงานจะเหมือน Require() เพียงแต่ว่ามันจะเรียกไฟล์เ้
ข้ามาในสคริปต์แค่ครั้งเดียว
Virtual() : สำหรับฟังก์ชั่นนี้อาจจะดูแปลกแหวกแนวไปหน่อย แต่ถ้าใครใช้ Apache คงเคยเจอโค้ดแบบนี้กัน เพราะใช้งานได้เฉพาะกับ
Apache เท่านั้น
ซึ่งก็เหมือนกับการเีรียกใช้ใน PHP โดยเขียนว่า
ซึ่งฟังก์ชั่นนี้ก็สามารถเรียกใช้ไฟล์ได้เหมือน Include() แต่ขอแนะนำให้ใช้ Include()จะดีกว่าครับ
จาก: http://www.bloggang.com/mainblog.php?id=jommann&month=20-06-2008&group=5&gblog=1
ขึ้นไปด้านบน
