آموزش MVC در زبان برنامه نویسی PHP

14 1,238

امروزه الگوی 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

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

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

مثال فارسی MVC

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 ترک نمی‌کنیم. بنابراین نکات زیر برای هر زبانی که از ساختار MVC پیروی می‌کند بسیار حائز اهمیت است و می‌‍‌تواند به درک شما از این الگو و معماری ۳ لایه کمک کند:

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

توجه: دوستان عزیز آموزش ویدیویی پی اچ پی (PHP) از مقدماتی تا پیشرفته به زبان فارسی + ساخت CMS مشابه وردپرس را می‌توانید با کلیک روی اینجا یاد بگیرید. (این دوره در حال برگزاری است)

آموزش مقدماتی تا پیشرفته PHP7 به همراه ساخت CMS اختصاصی مشابه وردپرس

14 نظر
  1. Wizen
    0

    بسیار عالی

  2. Zahra
    0

    سلام.ببخشید ممکنه یکسری کتاب دراین مورد معرفی کنید؟

  3. علی مصطفایی
    0

    ممنون بابت توضیحات مختصر و جامع

  4. علیزاده
    0

    سلام من تازه با سایتتون آشنا شدم. خیلی مطالب مفیدی دارید. انشاالله موفق باشید

  5. سیدامیرحسین رسولی
    0

    عالی بود
    جامع ، ساده و منظم
    ممنون

  6. پیکسل بوی
    0

    سلام خدمت شما
    مطلب بسیار ساده ، مفید و بطور کامل همه چیز رو توضیح داده
    ممنونم از شما و سایت خوبتون

  7. شمس
    0

    سلام و خسته نباشید گرم…..آموزشتون عالیه….ای کاش یه آموزش هم در مورد شی گرائی میذاشتین

  8. کیمیا وردپرس
    0

    بسیار عالی بود، ممنون و متشکرم از شما

  9. دنی
    0

    با تشکر از پست مفید شما خیلی عالی و ساده و قابل فهم توضیح داده بودین خسته نباشید میگم

  10. احمد
    0

    ساده، رسا، مفید با مثال عملی گویا

    عالی بود.
    مرسی

  11. امیر
    0

    سلام ممنون دوستان عالی بود

  12. رادین
    0

    عالی …
    فقط یه اشتباه تایپی دیدم که گفتم بهتون اطلاع بدم

    اگر نگاهی که فولدرها داشته باشید متوجه خواهید شد که فولدرهای

    کلمه سوم “که” باید به “به” تغییر داده بشه
    با تشکر

    1. روکسو
      0

      با تشکر از همراهی شما دوست عزیز
      ویرایش صورت پذیرفت.

  13. sina
    0

    فوق العاده بود ممنون خسته نباشید.
    همه فقط توضیح میدن و خبری از مثال کاربردی نیست؛ اما این مطلب عالی بود.

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.