الگوی MVC در PHP

  • آپدیت شده در تاریخ

الگوی MVC در PHP

امروزه الگوی MVC (مخفف عبارت Model View Controller) در اکثر برنامه‌ها و نرم‌افزارهای تحت وب پیاده‌سازی می‌شود.

اولین بار این الگو در زبان برنامه‌نویسی Smalltalk استفاده شد و پس از آن توسط زبان برنامه‌نویسی Java همه‌گیر شد. هم‌اکنون فریم ورک های بسیاری با ساختار الگوی MVC ایجاد شده‌اند.

همانگونه که در جریان هستید فریم‌ورک‌های بسیاری بر مبنای زبان برنامه‌نویسی PHP وجود دارند که از این الگو پیروی می‌کنند. بنابراین یک واقعیت بسیار بزرگ وجود دارد و آن محبوبیت الگوی MVC در PHP است.

لذا برآن شدیم آموزشی به زبان فارسی در ارتباط با الگوی MVC در PHP خدمت شما دوستان عزیز ارائه دهیم.

الگوی MVC توسط سه بخش Model, View و Controller تفکیک می‌شود:

Model، وظیفه‌ی مدیریت اطلاعات و داده‌ها را به عهده دارد. به عبارت دیگر این قسمت وظیفه‌ی ذخیره‌کردن و بازگردانی اطلاعات موجود از پایگاه داده (Database) و انجام برخی اعمال منطقی بر روی آنها را به عهده‌ دارد.

View، وظیفه‌ی نمایش اطلاعات تولید شده توسط Model‌ را بر عهده داشته تا آن را در یک فرمت و شمایل خاص به کاربران نمایش دهد.

Controller، وظیفه‌ی تنظیم و هماهنگی بین Model و View را بر عهده دارد. Controller یک درخواست از کاربر دریافت می‌کند سپس Model را جهت دستیابی به اطلاعات طبقه‌بندی شده متناسب با پردازشی که انجام داده است، فراخوانی کرده و در نهایت اطلاعات را به View‌ ارسال می‌کند.

در تصویر زیر یک دیاگرام مشاهده می‌کنید که به صورت کامل رابطه‌ی بین Model, View و Controller را نمایش می‌دهد:

الگوی MVC در PHP

در این آموزش یک مثال کاربردی تحت عنوان کتابخانه‌ی شخصی جهت آشنایی بیشتر شما عزیزان با ساختار الگوی MVC در PHP ایجاد کرده‌ایم:

همانگونه که در تصویر زیر مشاهده می‌کند فولدر نرم‌افزار ما تحت عنوان MVC دارای ۳ فولدر controller, model‌ و view و یک فایل Index.php‌ جهت هماهنگی بخش‌های مختلف است.

الگوی MVC در PHP

Controller

Controller به عنوان اولین موجودیت یک نرم‌افزار MVC یک سری درخواست (Request) از کاربر دریافت می‌کند. سپس این درخواست‌ها را به Model ارسال کرده و پاسخی که از Model دریافت کرده را به لایه‌ی View ارسال می‌کند.

بنابراین در پوشه‌ی controller‌ تنها یک فایل وجود دارد که با نام Controller.php‌ مشخص شده است. و تمامی فرمان‌های کنترلی یک وب سایت مانند ذخیره کردن، فیلتر کردن و … در این فایل پردازش می‌شود. اگر نگاهی به فولدرها داشته باشید متوجه خواهید شد که فولدرهای model و view یک فریم‌ورک کوچک با ساختاری متناسب را تشکیل‌ داده‌اند.

فایل Controller.php را باز کرده و کدهای زیر را درون آن قرار دهید:

کلاس Controller دارای یک تابع و سازنده‌ی پیش‌فرض است. این سازنده یک کلاس Model را ایجاد کرده و برابر متغییر لوکال model$ قرار می‌دهد.

سپس با تعریف یک تابع تحت عنوان invoke و استفاده از یک شرط چک می‌کند که آیا درخواستی برای نمایش کتاب وجود دارد یا خیر؟ که در صورت عدم ارسال درخواست لیستی از کتابهای موجود را از Model دریافت کرده و در View مربوط به آن (view/booklist.php) را به نمایش می‌گذارد.

در غیر اینصورت کتاب درخواستی را به Model ارسال کرده و پاسخ آن را در خروجی View موردنظر (view/viewbook.php) نمایش می‌دهد.

و اما فایل index.php که تمام درخواست‌ها را به Controller محول می‌کند.

بنابراین ویرایشگر خود را باز کرده و فایل index.php را با محتویات ذیل پر می‌کنید:

در خط شماره ۳ فایل index.php، فایل Controller.php از پوشه‌ی controller با استفاده از تابع include_once فراخوانی شده است. سپس در خط ۵ یک نمونه‌ی جدید از کلاس Controller ایجاد کرده‌ و در نهایت متد invoke را فراخوانی کرده‌ایم.

Model و کلاس‌ها

همانطور که قبلا ذکر شد Model وظیفه‌ی فراهم کردن داده‌ها و انجام اعمال منطقی روی آنها را به عهده دارد.

جهت اضافه کردن Model به ساختار نرم‌افزاری خود نیاز به دو کلاس داریم. ۱) Model.php و ۲) Book.php. به کلاس Model در هر بار اجرای برنامه‌ نیازی نیست.

کلاس Book به عنوان یک کلاس Entity شناخته می‌شود. در یک نرم افزار با الگوی MVC بهترین روش بدین صورت است که کلاس‌های Entity یا کلاس‌هایی که هویت یک شیء را مشخص می‌کنند توسط Model فراخوانی شوند.

بنابراین فایل Model.php‌ را به صورت زیر ایجاد می‌کنیم:

همانطور که ملاحظه می‌کنید در فایل فوق ابتدا فایل Book.php را جهت ساخت نمونه‌های اولیه فراخوانی کرده‌ایم.

سپس یک تابع تحت عنوان getBookList ایجاد کرده تا تمامی اطلاعات را از داده‌های تولیدی دریافت کند (در دنیای واقعی این اطلاعات در دیتابیس و پایگاه داده ذخیره می‌شوند و دیگر تابع getBookList کاربردی ندارد بلکه از یک کوئری Select‌ استفاده می‌شود).

در نهایت نمونه‌های دلخواه را متناسب با فیلدهایی که در کلاس Book وجود دارند ایجاد می‌کنیم. سپس تابع getBook را نوشته و عنوان تمامی کتاب‌ها را باز می‌گردانیم.

بنابراین در فایل Book.php‌ کلاس Book‌ را بدین صورت تعریف می‌کنیم:

View

آخرین مرحله تنظیم خروجی و قالب نمایشی اطلاعات است. این اطلاعات توسط Model‌ به شکل‌های متفاوتی مانند: Objects یا XML‌ و Json یا … بازگردانده خواهند شد.

شاید بتوان گفت ساده‌ترین بخش یک نرم افزار با الگوی MVC، بخش View آن است. این بخش از کدهای HTML و المان‌های JavaScript‌ تشکیل می‌شود. در واقع Controller‌ اطلاعات را از طریق Model‌ به یک View خاص ارسال می‌کند.

معمولا برای هر فایل یک View مجزا ایجاد می‌کنیم. در این مثال فولدر view دو فایل viewbook.php و booklist.php دارد.

فایل viewbook.php‌ را ایجاد کرده و محتویات کد زیر را درون آن قرار می‌دهیم:

و در نهایت برای فایل booklist.php داریم:

در دو فایل فوق با استفاده از دستورهای مشخص مانند book->author$ به اطلاعات موجود در Model دست پیدا کردیم و آنها را در خروجی هر فایل نمایش دادیم.

ممنونم که تا آخر مقاله آموزشی الگوی MVC در PHP با ما بودید و تبریک می گم ! یک مثال کاملا کاربردی با استفاده از الگوی MVC در PHP بوجود آوردید. اما این مقاله را بدون شرح مهم ترین نکات الگوی MVC ترک نمی‌کنیم.

بنابراین نکات زیر برای هر زبانی که از ساختار MVC پیروی می‌کند بسیار حائز اهمیت است و می‌‍‌تواند به درک شما از این الگو و معماری ۳ لایه کمک کند:

  • Model و View دو بخش مجزا هستند که نرم‌افزار شما را بسیار انعطاف پذیر می‌کند
  • Model و View به صورت جداگانه قابل تغییر هستند و می‌توان کدهای جدیدی در آنها جایگزین کرد بدون آنکه کلیت نرم افزار تغییر کند
  • هر ماژول Model, View و Controller به صورت جداگانه قابلیت Debugging‌ یا خطایابی دارند و این کار شما را بسیار ساده می‌کند.

امیدوارم مقاله آموزشی الگوی MVC در PHP برای شما دوستان گرامی مفید واقع شده باشد

برای راحتی کار و آشنایی با نمونه کدهای php با الگوی PHP یک پروژه بصورت MVC قرار داده شده که از باکس دانلود می توانید دریافت کنید (آموزش composer)

هر مشکل یا سوالی در رابطه با پیاده سازی کدها داشتید , از طریق نظرات با ما در ارتباط باشید . سریعا , پاسخگوشی سوالات شما هستیم.

موفق باشید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دوره های آموزشی