Skip to content

1. استفاده از معماری MVC در برنامه‌های وب/PHP

PDF برای سند در دسترس است |ICI|.

کد این سند در |ICI| موجود است.

مدل MVC (مدل-نما-کنترل‌کننده) با هدف تفکیک واضح لایه‌های ارائه، پردازش و دسترسی به داده‌ها طراحی شده است. یک برنامه وب که از این مدل پیروی می‌کند، به شکل زیر ساختار خواهد داشت:

چنین معماری اغلب به‌عنوان معماری سه‌لایه یا سه‌سطحی شناخته می‌شود:

  • رابط کاربری نما (V) است
  • منطق برنامه کنترل‌کننده (C) است
  • منابع داده، مدل (M) هستند.

رابط کاربری اغلب یک مرورگر وب است، اما می‌تواند یک برنامه مستقل باشد که درخواست‌ها را به سرویس وب از طریق شبکه ارسال می‌کند و نتایج دریافتی را قالب‌بندی می‌کند. منطق برنامه از اسکریپت‌هایی تشکیل شده است که درخواست‌های کاربر را پردازش می‌کنند. منبع داده اغلب یک پایگاه داده است، اما می‌تواند فایل‌های ساده و تخت، یک دایرکتوری LDAP، یک سرویس وب از راه دور و غیره نیز باشد. حفظ درجه بالایی از استقلال بین این سه مولفه به نفع توسعه‌دهنده است، به طوری که اگر یکی از آنها تغییر کند، دو مولفه دیگر نیازی به تغییر نداشته باشند یا تنها به حداقل تغییر نیاز پیدا کنند.

معماری MVC برای برنامه‌های وب نوشته شده با زبان‌های شیءگرا بسیار مناسب است. زبان PHP (4.x) شیءگرا نیست. با این وجود، می‌توان تلاشی برای ساختاردهی کد و معماری برنامه به منظور همسوسازی بیشتر با مدل MVC انجام داد:

  • منطق کسب‌وکار برنامه در ماژول‌هایی جدا از ماژول‌های مسئول مدیریت دیالوگ درخواست-پاسخ قرار خواهد گرفت. معماری MVC به شکل زیر درمی‌آید:

درون بلوک [Logique Applicative]، می‌توانیم تمایز قائل شویم:

  • برنامه اصلی یا کنترل‌کننده، که نقطه ورود به برنامه است.
  • بلوک [Actions]، مجموعه‌ای از اسکریپت‌ها که مسئول اجرای اقدامات درخواستی کاربر هستند.
  • بلوک [Classes métier] که شامل ماژول‌های PHP مورد نیاز برای منطق برنامه است. این ماژول‌ها مستقل از کلاینت هستند. به عنوان مثال، تابعی که مالیات را بر اساس اطلاعات مشخصی که به عنوان پارامتر ارائه شده‌اند محاسبه می‌کند، نیازی ندارد که به نحوهٔ به دست آوردن آن اطلاعات بپردازد.
  • بلوک [Classes d'accès aux données]، که شامل ماژول‌های PHP است که داده‌های مورد نیاز کنترل‌کننده را بازیابی می‌کنند، که اغلب داده‌های پایدار هستند (BD، فایل‌ها و غیره)
  • مولدهای نما که نماهای ارسالی به کلاینت را تولید می‌کنند.

در ساده‌ترین موارد، منطق برنامه اغلب به دو ماژول کاهش می‌یابد:

  • ماژول [contrôle] که ارتباط کلاینت-سرور را مدیریت می‌کند: پردازش درخواست و تولید پاسخ‌های مختلف
  • ماژول [métier] که داده‌های پردازش‌شده را از ماژول [contrôle] دریافت کرده و در مقابل نتایج را در اختیار آن قرار می‌دهد. این ماژول [métier] سپس دسترسی به خود داده‌های پایدار را مدیریت می‌کند.