ทั้ง include และ require ต่างนำเข้า (และรัน) เนื้อหาของไฟล์ PHP อีกไฟล์เข้ามาในไฟล์ปัจจุบัน ความแตกต่างเพียงอย่างเดียวคือวิธีจัดการเมื่อล้มเหลว: require ทำให้เกิด fatal error หากไฟล์หายไป ขณะที่ include เพียงแค่ส่ง warning และทำงานต่อไป
ทั้ง include และ require ต่างนำเข้า (และรัน) เนื้อหาของไฟล์ PHP อีกไฟล์เข้ามาในไฟล์ปัจจุบัน ความแตกต่างเพียงอย่างเดียวคือวิธีจัดการเมื่อล้มเหลว: require ทำให้เกิด fatal error หากไฟล์หายไป ขณะที่ include เพียงแค่ส่ง warning และทำงานต่อไป
<?php
include "config.php"; // if missing → WARNING, script CONTINUES
require "database.php"; // if missing → FATAL ERROR, script STOPS
include → file missing → emits a Warning, execution continues (file's code skipped)
require → file missing → throws a Fatal Error, execution HALTS
ใช้ require สำหรับไฟล์ที่แอปพลิเคชัน ทำงานไม่ได้หากขาดมัน (คลาสหลัก, config สำคัญ, การตั้งค่าฐานข้อมูล) เพราะคุณต้องการให้มันหยุดทันทีหากไฟล์เหล่านี้หายไป ใช้ include สำหรับไฟล์ที่เป็น optional (เช่น เทมเพลต sidebar) ที่ไฟล์หายไปไม่ควรทำให้หน้าเว็บล่ม
require_once "functions.php"; // include the file ONLY if not already included
include_once "helper.php";
require_once/include_once นำเข้าไฟล์เฉพาะเมื่อยังไม่เคยนำเข้ามาก่อน ซึ่ง จำเป็น เพื่อหลีกเลี่ยงข้อผิดพลาด "cannot redeclare function/class" เมื่อไฟล์อาจถูก include หลายครั้ง (เช่น การนิยามคลาสที่ถูกดึงเข้ามาโดยหลายไฟล์)
// included files share the SAME scope and can define functions, classes, variables
// config.php:
$dbHost = "localhost";
// main.php:
require "config.php";
echo $dbHost; // "localhost" — the variable is available
// ❌ old style — manually requiring every class file
require_once "User.php";
require_once "Order.php";
// ✅ modern — Composer AUTOLOADING loads classes on demand automatically
require "vendor/autoload.php"; // one line; classes load when used (PSR-4)
$user = new User(); // User.php loaded automatically
ใน PHP สมัยใหม่ คุณแทบไม่ได้ใช้ require ด้วยมือสำหรับคลาส เพราะ autoloader ของ Composer จะโหลดให้ตามความต้องการ คุณยังคงใช้ require "vendor/autoload.php" เพียงครั้งเดียวเพื่อ bootstrap มัน
การเข้าใจ include vs require เป็นความรู้พื้นฐานแต่สำคัญของ PHP เพราะเป็นวิธีที่ไฟล์ PHP แบ่งปันโค้ดกัน และความแตกต่างนี้สำคัญต่อความถูกต้อง
ประเด็นสำคัญคือพฤติกรรมเมื่อล้มเหลว: ใช้ require สำหรับไฟล์ที่จำเป็น (เพื่อให้แอปล้มเหลวอย่างรวดเร็วและชัดเจนหากไฟล์สำคัญหายไป) และ ใช้ include สำหรับไฟล์ optional (เพื่อให้ไฟล์ที่ไม่สำคัญหายไปไม่ทำให้หน้าเว็บล่ม)
การรู้รูปแบบ _once เป็นสิ่งจำเป็นในทางปฏิบัติเพื่อป้องกันข้อผิดพลาด "cannot redeclare" ที่พบบ่อยจากการ include การนิยามคลาสหรือฟังก์ชันซ้ำโดยไม่ตั้งใจ
ที่สำคัญพอ ๆ กันคือการเข้าใจบริบทสมัยใหม่: แม้โครงสร้างเหล่านี้จะเป็นพื้นฐาน แต่ PHP สมัยใหม่พึ่งพา Composer autoloading (โหลดคลาสตามความต้องการ) แทนการ require แต่ละไฟล์ด้วยมือ ดังนั้นในโค้ดปัจจุบันคุณส่วนใหญ่เพียงแค่ require "vendor/autoload.php" ครั้งเดียวและปล่อยให้ autoloading จัดการที่เหลือ
การรู้ทั้งกลไก include/require (และเมื่อไรที่พฤติกรรมความล้มเหลวแต่ละแบบเหมาะสม) และวิธีที่ autoloading สมัยใหม่เข้ามาแทนการ include ด้วยมือ เป็นความรู้พื้นฐานในการทำงานกับโค้ดเบส PHP ทั้งเก่าและใหม่