سطح A: معماری ماژولار و اصل DRY

در دنیای برنامه‌نویسی یک قانون طلایی وجود دارد: DRY (Don't Repeat Yourself). تکرار کد یعنی زحمت بیشتر برای نگهداری و احتمال خطای بالاتر. بیایید ببینیم PHP چطور این مشکل را حل می‌کند.

۱. دستورات جادویی Include و Require

این دستورات محتویات یک فایل PHP (یا HTML) دیگر را می‌خوانند و دقیقاً در جایی که دستور صدا زده شده، قرار می‌دهند.

روش ۱: include

فایل را وارد می‌کند.

  • اگر فایل پیدا نشد: یک هشدار (Warning) می‌دهد.
  • وضعیت برنامه: برنامه ادامه پیدا می‌کند و بقیه کدها اجرا می‌شوند.
  • کاربرد: برای بخش‌هایی که حیاتی نیستند (مثل تبلیغات یا فوتر).
include 'menu.php';
روش ۲: require

فایل را ملزم می‌کند.

  • اگر فایل پیدا نشد: خطای مرگبار (Fatal Error) می‌دهد.
  • وضعیت برنامه: برنامه بلافاصله متوقف می‌شود (Die).
  • کاربرد: برای بخش‌های حیاتی (مثل هدر، دیتابیس، توابع مهم).
require 'header.php';

مثال عملی: ساختار یک سایت استاندارد

بیایید یک سایت ۳ صفحه‌ای بسازیم که فقط ۱ هدر و ۱ فوتر دارد.

۱. فایل header.php (مشترک)
<!DOCTYPE html>
<html>
<body>
    <nav>
        <a href="index.php">خانه</a> | 
        <a href="about.php">درباره ما</a>
    </nav>
    <hr>
۲. فایل index.php (صفحه اصلی)
<?php require 'header.php'; ?>

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

<?php include 'footer.php'; ?>
۳. فایل footer.php (مشترک)
    <hr>
    <footer>
        <p>کپی‌رایت © 2024</p>
    </footer>
</body>
</html>
خروجی: وقتی کاربر index.php را باز می‌کند، کدهای هر سه فایل پشت سر هم اجرا شده و یک صفحه HTML کامل را می‌سازند.

تمرین و چالش

تمرین کدنویسی: منوی داینامیک

  1. سه فایل بسازید: top.php, bottom.php, contact.php.
  2. در contact.php یک فرم تماس (از گام ۴) قرار دهید.
  3. از require برای اضافه کردن بخش بالا و پایین استفاده کنید.
  4. چالش خلاقانه: کاری کنید که اگر فایل bottom.php وجود نداشت، سایت همچنان کار کند، اما اگر top.php نبود، سایت کلاً بالا نیاید.

چالش هوش مصنوعی: Refactoring (بازنویسی)

فرض کنید یک فایل بزرگ ۱۵۰ خطی دارید که همه چیز (CSS، HTML، PHP) در آن مخلوط است. می‌خواهید از هوش مصنوعی بخواهید آن را تمیز کند.

تکلیف: یک پرامپت (دستور) دقیق برای هوش مصنوعی بنویسید که از او بخواهد کد شما را بگیرد و آن را به ۳ فایل مجزا (`header`, `footer`, `body`) تقسیم کند و فایل اصلی را تحویل دهد.

نکته برای پرامپت: به هوش مصنوعی بگویید که دقیقاً کجا باید کات بزند (مثلاً قبل از تگ main و بعد از آن).