كل من include و require يستورد (وينفذ) محتويات ملف PHP آخر في الملف الحالي. الفرق الوحيد هو كيفية التعامل مع الفشل: require يسبب خطأ حرج إذا كان الملف مفقوداً، بينما include يصدر فقط تحذيراً ويستمر في التنفيذ.
<?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 للملفات التي لا يمكن للتطبيق أن يعمل بدونها (الفئات الأساسية، الإعدادات الحرجة، إعداد قاعدة البيانات) — تريد منه أن يتوقف بحزم إذا كانت مفقودة. استخدم include للملفات الاختيارية (مثل قالب شريط جانبي) حيث لا يجب أن يؤدي الملف المفقود إلى توقف الصفحة.
require_once "functions.php"; // include the file ONLY if not already included
include_once "helper.php";
require_once/include_once تستورد الملف فقط إذا لم يتم استيراده بالفعل — ضروري لتجنب أخطاء "cannot redeclare function/class" عندما قد يتم تضمين الملف عدة مرات (مثل تعريف فئة يتم سحبها من قبل عدة ملفات).
// 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 يدويًا للفئات — محمّل Composer التلقائي يحملها عند الحاجة. لا تزال تستخدم require "vendor/autoload.php" مرة واحدة لتهيئته.
فهم include مقابل require هو معرفة PHP أساسية لكن مهمة — فهي كيفية مشاركة ملفات PHP للكود، والتمييز يهم لصحة التطبيق.
النقطة الرئيسية هي سلوك الفشل: require للملفات الأساسية (حتى يفشل التطبيق بسرعة وبوضوح إذا كان ملف حرج مفقوداً) و include للملفات الاختيارية (حتى لا يؤدي الملف غير الحرج المفقود إلى توقف الصفحة).
معرفة متغيرات _once ضرورية عملياً لمنع أخطاء "cannot redeclare" الشائعة من تضمين تعريف فئة أو دالة مرتين عن طريق الخطأ.
من نفس الأهمية فهم السياق الحديث: بينما تعتبر هذه الإنشاءات أساسية، PHP الحديثة تعتمد على التحميل التلقائي من Composer (تحميل الفئات عند الحاجة) بدلاً من طلب كل ملف يدويًا، لذلك في الكود الحالي تستخدم في الغالب فقط require "vendor/autoload.php" مرة واحدة واترك التحميل التلقائي يتولى الباقي.
معرفة آليات include/require (ومتى يكون كل نمط فشل مناسباً) وكيفية أن التحميل التلقائي الحديث يحل محل الاستيراد اليدوي هي معرفة يومية للعمل مع أساس أكواد PHP القديمة والحديثة.