سطح 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 کامل را میسازند.
تمرین و چالش
تمرین کدنویسی: منوی داینامیک
- سه فایل بسازید:
top.php,bottom.php,contact.php. - در
contact.phpیک فرم تماس (از گام ۴) قرار دهید. - از
requireبرای اضافه کردن بخش بالا و پایین استفاده کنید. - چالش خلاقانه: کاری کنید که اگر فایل
bottom.phpوجود نداشت، سایت همچنان کار کند، اما اگرtop.phpنبود، سایت کلاً بالا نیاید.
چالش هوش مصنوعی: Refactoring (بازنویسی)
فرض کنید یک فایل بزرگ ۱۵۰ خطی دارید که همه چیز (CSS، HTML، PHP) در آن مخلوط است. میخواهید از هوش مصنوعی بخواهید آن را تمیز کند.
تکلیف: یک پرامپت (دستور) دقیق برای هوش مصنوعی بنویسید که از او بخواهد کد شما را بگیرد و آن را به ۳ فایل مجزا (`header`, `footer`, `body`) تقسیم کند و فایل اصلی را تحویل دهد.
نکته برای پرامپت: به هوش مصنوعی بگویید که دقیقاً کجا باید کات بزند (مثلاً قبل از تگ main و بعد از آن).