دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / افزودن فایل (PHP Include)

افزودن فایل (PHP Include)

30 دقیقه Article

Include و Require: مهندسیِ قطعاتِ کد 🧩🏗️

در پروژه‌هایِ بزرگ، نوشتنِ همه‌یِ کدها در یک فایل فاجعه‌بار است. ما کدهایی که تکرار می‌شوند (مثل منویِ سایت یا هدر) را در فایل‌هایِ جداگانه می‌نویسیم و هر جا نیاز بود، آن‌ها را فراخوانی می‌کنیم.

تفاوتِ حیاتیِ Include و Require

  • Include: اگر فایل پیدا نشود، یک Warning (اخطار) می‌دهد اما اجرایِ بقیه‌یِ کدهایِ صفحه ادامه می‌یابد.
  • Require: اگر فایل پیدا نشود، یک Fatal Error (خطایِ مهلک) می‌دهد و اجرایِ کلِ برنامه در همان لحظه متوقف می‌شود.

نسخه‌هایِ _once:

دستوراتِ include_once و require_once چک می‌کنند که اگر فایل قبلاً در جایِ دیگری فراخوانی شده، دیگر دوباره آن را لود نکنند. این کار از مشکلِ خطرناکِ "تعریفِ مجددِ توابع" جلوگیری می‌کند.

امنیت: هرگز نامِ فایلی که قرار است include شود را مستقیماً از ورودیِ کاربر (مثلاً GET) نگیرید! این کار راه را برایِ حمله‌یِ LFI (Local File Inclusion) باز می‌کند.

استفاده برای مدیریت صفحات:

{code_block('include "header.php";\necho "محتوای اصلی سایت";\ninclude "footer.php";')}
مسیردهی: همیشه سعی کنید از مسیرهایِ مطلق (Absolute Paths) با استفاده از ثابتِ جادویی __DIR__ استفاده کنید تا در لایه‌هایِ مختلفِ پوشه‌ها دچار مشکل نشوید.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی پیشرفته و امنیت در PHP 🐘⚙️

درکِ عمیقِ مفاهیمِ پیشرفته، تفاوتِ بینِ یک کدنویسِ معمولی و یک معمارِ نرم‌افزار را رقم می‌زند.

۱. بهینه‌سازی I/O و بافرینگ

در هنگامِ کار با فایل‌هایِ حجیم، هرگز کلِ فایل را به یکباره در حافظه (RAM) بارگذاری نکنید. استفاده از Streams و توابعِ fopen/fgets به شما اجازه می‌دهد فایل را خط به خط پردازش کنید که باعث می‌شود مصرفِ حافظه همیشه در کمترین سطحِ ممکن باقی بماند.

۲. امنیتِ نشست‌ها (Session Security)

مهم‌ترین خطر در مدیریتِ کاربران، Session Hijacking است. همیشه بعد از لاگین کردنِ کاربر، از session_regenerate_id(true) استفاده کنید تا شناسه‌یِ نشستِ قبلی باطل شود. همچنین فلگ‌هایِ HttpOnly و Secure را برای کوکی‌ها فعال کنید.

۳. استانداردهایِ مدرن و Autoloading

در پروژه‌هایِ بزرگ، استفاده از include دستی فاجعه‌بار است. استانداردِ PSR-4 و استفاده از Composer به شما اجازه می‌دهد کلاس‌ها را فقط در زمانی که واقعاً نیاز هستند بارگذاری کنید (Lazy Loading)، که سرعتِ لود شدنِ کلِ اپلیکیشن را به شدت بالا می‌برد.

نکته استراتژیک: به جایِ استفاده از توابعِ سنتی، سعی کنید به سمتِ Object-Oriented Programming (OOP) حرکت کنید. اکثرِ کتابخانه‌هایِ پیشرفته‌یِ PHP مثل DateTime و PDO از این پارادایم استفاده می‌کنند.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

فراخوانیِ اجباری Easy
سوال تمرین

فایلی به نام "config.php" را به صورتی فراخوانی کنید که اگر وجود نداشت، اجرایِ برنامه متوقف شود.

پاسخ تمرین
PHP
<?php
require "config.php";
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.