آموزش رایگان PHP

تفاوت include، require، include_once و require_once در PHP

1405/05/01 20:32 محراب حسن زاده
تفاوت include، require، include_once و require_once در PHP

یکی از بزرگ‌ترین مزیت‌های زبان برنامه نویسی PHP، قابلیت تقسیم‌بندی پروژه‌ها به فایل‌های کوچک‌تر و مدیریت آسان‌تر آن‌هاست. برای ضمیمه کردن یا وارد کردن یک فایل خارجی به داخل یک سند PHP، چهار دستور کلیدی وجود دارد: include، require، include_once و require_once. اگرچه هدف نهایی همه آن‌ها وارد کردن یک فایل است، اما تفاوت‌های بسیار حیاتی در نحوه برخورد با خطاها و مدیریت بارگذاری مجدد دارند که مستقیماً بر کارایی، امنیت و پایداری وب‌سایت شما تأثیر می‌گذارد.

۱. تفاوت اصلی include و require در چیست؟

بزرگ‌ترین و مهم‌ترین تفاوت بین این دو دستور، در نحوه مدیریت خطاها (Error Handling) هنگام عدم وجود فایل هدف یا رخ دادن مشکل در بارگذاری آن است:

  • دستور include: اگر مفسر PHP نتواند فایل مورد نظر را پیدا کند، یک خطای هشدار از نوع E_WARNING صادر می‌کند. با وجود این هشدار، اجرای کدهای برنامه متوقف نشده و بقیه کدهای صفحه تا انتها اجرا خواهند شد.
  • دستور require: اگر فایل هدف پیدا نشود، مفسر PHP یک خطای مهلک از نوع E_COMPILE_ERROR یا همان Fatal Error صادر کرده و بلافاصله اجرای کل اسکریپت را متوقف می‌کند.

مثال عملی برای include


include 'non_existent_file.php';
echo "این خط با وجود پیدا نشدن فایل بالا، همچنان چاپ خواهد شد!";

مثال عملی برای require


require 'non_existent_file.php';
// این خط هرگز اجرا نخواهد شد چون اسکریپت در خط قبل متوقف شده است.
echo "این خط هرگز چاپ نخواهد شد!";

۲. پسوندهای once چه تفاوتی ایجاد می‌کنند؟

زمانی که از واژه once (به معنی یک‌بار) در انتهای این دستورات استفاده می‌کنید (یعنی include_once و require_once)، رفتار مفسر PHP تغییر می‌کند. در این حالت، PHP ابتدا بررسی می‌کند که آیا فایل مورد نظر قبلاً در طول اجرای اسکریپت جاری ضمیمه شده است یا خیر.

اگر فایل از قبل ضمیمه شده باشد، مفسر از ضمیمه کردن مجدد آن خودداری می‌کند. این ویژگی به شدت در پروژه‌های بزرگ کاربرد دارد؛ زیرا از بروز خطاهای تداخل توابع یا کلاس‌های تکراری (Redeclare Errors) جلوگیری می‌کند.

مثال استفاده از require_once برای هدر و توابع


// فرض کنید فایل functions.php حاوی تعریف توابع اصلی است
require_once 'functions.php';
require_once 'functions.php'; // این خط نادیده گرفته می‌شود و خطایی رخ نمی‌دهد.

جدول مقایسه رفتاری توابع چهارگانه

دستور شدت خطا در صورت نبود فایل ادامه اجرای اسکریپت؟ کنترل بارگذاری مجدد؟
include E_WARNING (هشدار) بله خیر (مجدداً بارگذاری می‌کند)
require E_COMPILE_ERROR (خطای مهلک) خیر (متوقف می‌شود) خیر (مجدداً بارگذاری می‌کند)
include_once E_WARNING (هشدار) بله بله (فقط یک‌بار بارگذاری می‌کند)
require_once E_COMPILE_ERROR (خطای مهلک) خیر (متوقف می‌شود) بله (فقط یک‌بار بارگذاری می‌کند)

بهترین الگوها (Best Practices) بر اساس استانداردهای گوگل

بر اساس استانداردهای برنامه‌نویسی بهینه و سئوی تکنیکال وب‌سایت‌ها، خطاهای موجود در لایه بک‌اند نباید عملکرد کلی صفحه یا دسترسی کاربر را بدون دلیل مختل کنند، مگر اینکه آن منبع کاملاً حیاتی باشد:

  1. از require_once برای فایل‌های حیاتی سیستم استفاده کنید: فایل‌های پیکربندی دیتابیس (db.php)، تنظیمات امنیتی سیستم، کلاس‌های اصلی فریم‌ورک و فایل‌های تعریف توابع حتماً باید با require_once لود شوند. عدم وجود این فایل‌ها به معنی غیرقابل استفاده بودن برنامه است.
  2. از include برای بخش‌های نمایشی استفاده کنید: بخش‌هایی مانند بنرهای تبلیغاتی جانبی، بخش نظرات فرعی یا هر ویجتی که عدم لود شدنش به کل سایت آسیب نمی‌زند را با include یا include_once لود کنید تا در صورت بروز خطا، حداقل بقیه ساختار سایت برای کاربر و خزنده‌های گوگل نمایش داده شود.
  3. تاثیر بر پرفورمنس: استفاده بیش از حد از توابع با پسوند once سربار پردازشی کمی دارد زیرا PHP باید هربار لیست فایل‌های ضمیمه‌شده را چک کند. اگرچه در سیستم‌های مدرن این تفاوت ناچیز است، اما طراحی معماری تمیز و استفاده درست از Autoloaderها بهترین رویکرد استاندارد است.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر
1403/08/03 17:08

آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر

مطالعه بیشتر
مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها
1403/07/29 20:37

مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها

مطالعه بیشتر
آموزش استفاده از object-fit و object-position در CSS: تنظیم و قرارگیری تصاویر به‌صورت دقیق
1403/08/12 19:51

آموزش استفاده از object-fit و object-position در CSS: تنظیم و قرارگیری تصاویر به‌صورت دقیق

مطالعه بیشتر
آموزش جامع دستور SELECT و نمایش اطلاعات دیتابیس طبق استانداردهای گوگل و سئو
1405/05/13 21:07

آموزش جامع دستور SELECT و نمایش اطلاعات دیتابیس طبق استانداردهای گوگل و سئو

مطالعه بیشتر
آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت
1402/05/23 00:08

آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت

مطالعه بیشتر
آموزش اصول کار با WebSockets و ارتباطات بلادرنگ در وب: راهنمای کامل
1403/08/05 20:55

آموزش اصول کار با WebSockets و ارتباطات بلادرنگ در وب: راهنمای کامل

مطالعه بیشتر
آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل
1403/08/05 20:24

آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل

مطالعه بیشتر
آشنایی با متغیرها در PHP به زبان ساده (راهنمای جامع)
1405/03/21 01:34

آشنایی با متغیرها در PHP به زبان ساده (راهنمای جامع)

مطالعه بیشتر
آموزش کامل توابع در PHP: از مقدماتی تا پیشرفته با استانداردهای گوگل
1405/04/16 01:02

آموزش کامل توابع در PHP: از مقدماتی تا پیشرفته با استانداردهای گوگل

مطالعه بیشتر
آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)
1405/03/24 01:01

آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)

مطالعه بیشتر
آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها
1402/06/05 00:13

آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها

مطالعه بیشتر
Async/Await: نوشتن کدهای خواناتر و ناهم‌زمان در جاوا اسکریپت - آموزش کامل با مثال‌ها
1403/07/30 20:50

Async/Await: نوشتن کدهای خواناتر و ناهم‌زمان در جاوا اسکریپت - آموزش کامل با مثال‌ها

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد