استفاده از include و require برای مدیریت فایل‌ها

2

استفاده از include و require برای مدیریت فایل‌ها

در پروژه‌های واقعی و بزرگ تحت وب، نوشتن تمام کدهای سایت (مانند هدر، فوتر، اتصال به دیتابیس و توابع) در یک فایل واحد، کاری بسیار اشتباه و غیرمنطقی است. این کار نه تنها باعث شلوغی و ناخوانایی کدها می‌شود، بلکه بروزرسانی و خطایابی سایت را نیز به شدت سخت می‌کند.

در این مقاله از سایت پی اچ پی ساز (بخش نصب و سینتکس پایه)، قصد داریم شما را با دستورات include و require آشنا کنیم. این دستورات به شما اجازه می‌دهند تا کدهای خود را در چندین فایل مجزا نوشته و سپس آن‌ها را در هر جایی که نیاز دارید، فراخوانی و مدیریت کنید.

چرا باید فایل‌ها را جدا کنیم؟

فرض کنید یک وب‌سایت با ۵۰ صفحه مختلف دارید و در تمام این صفحات، منوی بالای سایت (Header) و بخش پایینی (Footer) تکرار شده است. اگر روزی بخواهید یک لینک به منوی سایت اضافه کنید، آیا منطقی است که کدهای ۵۰ فایل را به صورت دستی ویرایش کنید؟ قطعا خیر! راه حل اصولی این است که کدهای هدر را در یک فایل جداگانه (مثلاً header.php) بنویسید و در تمام ۵۰ صفحه، فقط آن فایل را فراخوانی کنید. در صورت نیاز به تغییر، شما فقط فایل header.php را ویرایش می‌کنید و تغییرات به صورت خودکار در تمام ۵۰ صفحه اعمال می‌شود. این همان جادوی کار با فایل‌ها در PHP است.

دستور include در PHP

دستور include برای وارد کردن و ارزیابی یک فایل مشخص در فایل فعلی استفاده می‌شود. وقتی از این دستور استفاده می‌کنید، مفسر PHP محتویات فایل مورد نظر را دقیقا در همان نقطه‌ای که دستور نوشته شده، کپی می‌کند.

مثال:

PHP

<?php
// فراخوانی فایل منوی بالای سایت
include 'header.php';

echo "<h1>به صفحه اصلی خوش آمدید</h1>";
echo "<p>این محتوای اصلی صفحه ما است.</p>";

// فراخوانی فایل فوتر
include 'footer.php';
?>

رفتار include در هنگام بروز خطا: اگر به هر دلیلی فایلی که با include فراخوانی کرده‌اید وجود نداشته باشد (مثلاً نام آن را اشتباه تایپ کرده باشید)، PHP یک هشدار (Warning) صادر می‌کند، اما اجرای بقیه کدهای برنامه متوقف نمی‌شود و سایت همچنان (البته به صورت ناقص) لود می‌شود.

دستور require در PHP

دستور require دقیقاً همان کار include را انجام می‌دهد، با این تفاوت که حساسیت بسیار بالاتری نسبت به وجود فایل دارد. کلمه Require در لغت به معنای “نیاز داشتن” یا “الزامی بودن” است.

مثال:

PHP

<?php
// فراخوانی فایلی که حاوی کدهای اتصال به پایگاه داده است
require 'database.php';

echo "ارتباط با دیتابیس برقرار شد و ادامه کدهای سایت در حال اجرا است.";
?>

رفتار require در هنگام بروز خطا: اگر فایلی که با require فراخوانی شده پیدا نشود، PHP یک خطای مهلک (Fatal Error) صادر کرده و اجرای کل برنامه در همان نقطه متوقف می‌شود. در این حالت هیچ کد دیگری در ادامه اجرا نخواهد شد و یک صفحه سفید یا پیام خطای جدی به کاربر نمایش داده می‌شود.

تفاوت اصلی: کِی از کدام استفاده کنیم؟

انتخاب بین include و require کاملا به اهمیت فایلی که قصد فراخوانی آن را دارید بستگی دارد:

  • از include استفاده کنید اگر: فایل مورد نظر برای ادامه کار سایت کاملاً حیاتی نیست. مثلاً اگر فایل مربوط به یک بنر تبلیغاتی یا یک بخش کوچک نمایشی لود نشود، سایت همچنان می‌تواند بدون مشکلِ اساسی به کار خود ادامه دهد.

  • از require استفاده کنید اگر: فایل مورد نظر بسیار حیاتی است. مثلاً اگر فایل اتصال به دیتابیس یا فایل حاوی توابع هسته سایت لود نشود، اجرای ادامه کدها هیچ معنایی ندارد و فقط باعث بروز خطاهای بیشتر می‌شود. بنابراین برنامه باید بلافاصله متوقف شود.

دستورات include_once و require_once

گاهی اوقات در پروژه‌های بزرگ و پیچیده که فایل‌ها به صورت تو در تو یکدیگر را فراخوانی می‌کنند، ممکن است یک فایل را به صورت تصادفی چندین بار فراخوانی کنید. اگر این فایل حاوی تعریف توابع (Functions) یا کلاس‌ها باشد، فراخوانی مجدد آن باعث بروز خطای “تعریف مجدد” (Redeclaration Error) شده و برنامه را متوقف می‌کند.

برای جلوگیری از این مشکل، PHP دو دستور include_once و require_once را ارائه کرده است. همان‌طور که از کلمه “once” (به معنای یک‌بار) پیداست، این دستورات قبل از فراخوانی فایل بررسی می‌کنند که آیا این فایل قبلاً در طول اجرای برنامه وارد شده است یا خیر. اگر قبلاً فراخوانی شده باشد، مفسر PHP از فراخوانی مجدد آن چشم‌پوشی می‌کند.

مثال:

PHP

<?php
// این فایل فقط و فقط یک بار لود می‌شود
require_once 'functions.php';

// اگر دوباره این دستور را بنویسید، پی اچ پی متوجه تکراری بودن آن شده و آن را نادیده می‌گیرد
require_once 'functions.php'; 
?>

جمع‌بندی

مدیریت صحیح فایل‌ها با استفاده از include و require، اولین قدم برای تبدیل شدن به یک برنامه‌نویس حرفه‌ای و ایجاد پروژه‌های ساختاریافته (Modular) است. همیشه سعی کنید کدهای خود را به بخش‌های منطقی و کوچک‌تر تقسیم کنید تا توسعه، خطایابی و کار تیمی در پروژه‌های شما در آینده بسیار آسان‌تر شود.

برای مطالعه مقالات کاربردی بیشتر و یادگیری اصولی و گام‌به‌گام پی اچ پی، سایر مطالب دسته‌بندی نصب و سینتکس پایه را در سایت پی اچ پی ساز دنبال کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *