نمونه اسکریپت ایجاد یک چارچوب ساده MVC در PHP
این توضیحات بصورت خودکار ارسال شده است برای دانلود فایل به سایت اصلی که لینک دانلود در پایین قرار داده شده است بروید
نمونه اسکریپت ایجاد یک چارچوب ساده MVC در PHP
در دنیای توسعه وب، ساختارهای سازمانیافته و قابل نگهداری اهمیت بسیار زیادی دارند، مخصوصاً زمانی که پروژهها بزرگتر و پیچیدهتر میشوند. یکی از الگوهای معماری رایج و پرکاربرد در توسعه برنامههای وب، الگوی مدل-نما-کنترلر یا همان MVC است. این الگو با جداسازی بخشهای مختلف برنامه، امکان توسعه، نگهداری و مقیاسپذیری را بسیار آسانتر میکند.
در این مقاله، قصد دارم یک نمونه اسکریپت ساده برای پیادهسازی چارچوب MVC در PHP را به صورت کامل و جامع توضیح دهم. این نمونه، هدفش آموزش است و در پروژههای واقعی، نیاز به بهبود و توسعه دارد، اما برای فهم اولیه و شروع کار، بسیار مناسب است.
مفهوم پایه MVC
قبل از شروع، باید بدانیم که MVC یعنی چه و هر قسمت چه وظایفی دارد:
- مدل (Model): مسئولیت مدیریت دادهها، منطق برنامه و ارتباط با بانک اطلاعاتی را بر عهده دارد. در این قسمت، دادهها دریافت، ذخیره و بهروزرسانی میشوند.
- نما (View): بخش ظاهری و نمایشی برنامه است. در این قسمت، دادههای رسیده از مدل، به شکل قابل فهم و زیبا نمایش داده میشوند.
- کنترلر (Controller): نقش هستهای در درخواستها دارد. درخواستهای کاربر را دریافت میکند، با مدل ارتباط برقرار میکند و نتیجه را به نما میفرستد.
ساختار فایل و پوشهها
برای پیادهسازی این چارچوب، ساختار سادهای به صورت زیر پیشنهاد میشود:
mvc/
│
├── index.php
├── controllers/
│ └── HomeController.php
├── models/
│ └── User.php
└── views/
└── home.php
در این ساختار، فایل `index.php` به عنوان نقطه شروع برنامه عمل میکند و درخواستها را هدایت میکند. پوشههای `controllers`، `models` و `views` برای نگهداری کنترلرها، مدلها و نماها طراحی شدهاند.
---
مرحله اول: فایل `index.php` – نقطه ورود
در این فایل، ابتدا باید درخواستهای کاربر را تحلیل کنیم و مسیر مناسب را برای فراخوانی کنترلر و اکشن تعیین کنیم. برای سادهسازی، فرض میکنیم درخواستها به صورت پارامتر `?page=` ارسال میشود.
php
// به عنوان نقطه ورود، درخواستها را مدیریت میکنیم
// مسیریابی ساده بر اساس پارامتر GET
// تعیین کنترلر و اکشن پایه
$controllerName = isset($_GET['page']) ? $_GET['page'] : 'home';
$controllerClass = ucfirst($controllerName) . 'Controller';
// ساخت مسیر فایل کنترلر
$controllerFile = 'controllers/' . $controllerClass . '.php';
if (file_exists($controllerFile)) {
require_once $controllerFile;
if (class_exists($controllerClass)) {
$controller = new $controllerClass();
// فرض بر این است که کنترلر تابع پیشفرض به نام index دارد
$controller->index();
} else {
echo "کنترلر پیدا نشد.";
}
} else {
echo "صفحه مورد نظر یافت نش... ← ادامه مطلب در magicfile.ir