در این قسمت روش طراحی و پیاده سازی بخش کنترولر(Controller) در چارچوب mvc را آموزش داده و پیاده سازی آنرا برای یک پروژه برنامه نویسی mvc نشان می دهیم.
برای مطالعه این بخش از آموزش mvc در php باید بخش های قبلی را مطالعه کرده باشید ، در بخش قبل روش طراحی و پیاده سازی قسمت مدل از MVC را داشتیم و در بخش های قبل از آن نیز معرفی کلی چارچوب MVC و مقدمه ای بر برنامه نویسی شی گرا در PHP را ارائه نمودیم .
معرفی بخش کنترولر از چارچوب MVC
بخش کنترولر اصلی ترین بخش چارچوب MVC است، چرا که پردازش های اصلی در این بخش انجام شده و اصلی ترین کدهای برنامه نویسی در این بخش نوشته می شوند. بخش کنترولر بعنوان هسته یک نرم افزار مبتنی بر MVC بیشترین فعالیت ها را در یک سیستم انجام می دهد، این بخش درخواست های کاربران را دریافت می کند و پس از بررسی و اعتبارسنجی آن، در صورت نیاز با فراخوانی توابعی از مدل کارهای لازم روی بانک اطلاعاتی را انجام می دهد و اطلاعات مورد نیاز را از بانک اطلاعاتی بدست می آورد و در نهایت خروجی های لازم را آماده کرده و تحویل بخش View می دهد.بخش کنترولر دارای مجموعه ای از توابع است که هر کدام برای پاسخگویی به یکی از درخواست های کاربران سایت نوشته شده اند.
قبل از اینکه وارد بحث اصلی طراحی کنترولر شویم لازم هست تا با دو موضوع مهم که طراحی و پیاده سازی کنترولر تحت تاثیر آنهاست را ارائه کنیم:
- قالب درخواست در چارچوب mvc
- کتابخانه طراحی واسط کاربر اسمارتی
قالب درخواست ها در چارچوب MVC
در چارچوب mvc با php ، یک فایل به نام index.php در ریشه وب سایت وجود دارد که برای تمام درخواست ها از سرور، این فایل درخواست می شود و نام کنترولر، نام تابع و پارامتر وروی تابع برای آن فرستاده می شود بصورت زیر:
http://blog.webaca.ir/index.php?id=controller/function/parameter
بعنوان مثال برای درخواست نمایش لیست دانشجویان درخواست زیر را می فرستد که تعیین می کند که تابع index از کنترولر stud اجرا شود.
http://blog.webaca.ir/index.php?id=stud/index
یا برای حذف دانشجویی با شناسه 100 درخواست زیر ارسال می شود که تعیین می کند تابع delete با پارامتر ورودی 100 از کنترولر stud فراخوانی شود.
http://blog.webaca.ir/index.php?id=stud/delete/100
وظیفه تفسیرهمه درخواست و اجرای تابع درخواستی بر عهده فایل bootstarp.php قرار دارد که در زیر پوشه utilites پروژه وجود دارد. فعلا می توانید به پیاده سازی فایل index.php و bootstarp.php کاری نداشته باشید بلکه از آنها استفاده کرده و لذت ببرید!
طراحی بخش کنترولر
برای نیازسنجی و طراحی بخش کنترولر باید ببینیم پروژه ما دارای چه جداولی است، و هر کدام از درخواست های کاربران مربوط به کدام یک از جداول بانک اطلاعاتی می شود، هر چند ممکن است برای پاسخگویی نیاز به استفاده از چند جدول هم باشد، ولی باید ببینیم کدام جدول در مرکز درخواست قرار دارد.
زیرپوشه کنترولر محل نگهداری فایل های کنترولر می باشد، در ساده ترین و روتین ترین شکل برای هر کدام از جداول بانک اطلاعاتی باید یک فایل کنترولر در پوشه controller سایت ایجاد کنیم. نام این فایل هم مشابه فایل های مدل از نام جدول و پسوند _controller تشکیل می شود.
در زیرپوشه controller از وب سایت ما یک فایل به نام controller.php دارای امکانات عمومی مورد استفاده در همه کنترولرها و فایل هایی بازای هر کدام از جداول بانک اطلاعاتی خواهد بود، فرض کنید دو جدول بنام tbl_fields و tbl_studs داریم ، زیرپوشه کنترولر ما حداقل دارای فایل هایی به نام های controller.phpو field_controller.php و stud_controller.php خواهند بود.
contoller.php
field_ contoller.php
stud_contoller.php
فعلا همین سه فایل را داریم ولی در آموزش های آینده فایل های کنترولر دیگری بر حسب نیاز به زیرپوشه کنترولر اضافه خواهیم کرد.
حال که با ساختار کلی پوشه کنترولر آشنا شدید، نگاهی می اندازیم به درخواست های کاربران و امکاناتی که باید برای هر کدام از آنها در فایل های کنترولر قرار دهیم. نمونه وب سایت آموزش را درنظر بگیرید و جداول رشته ها و دانشجویان در بانک اطلاعاتی و کاربرانی که وارد سایت می شوند. کاربری که وارد سایت می شود باید دارای امکانات زیر باشد:
مدیریت رشته ها
کاربر در مورد رشته ها باید دارای امکانات زیر باشد:
- نمایش لیست رشته ها
- اضافه کردن رشته جدید
- حذف رشته
- ویرایش رشته
و برای امکانات فوق لازم است تا کاربر درخواست های زیر را به سرور بفرستد:
- درخواست برای نمایش لیست رشته ها
- درخواست برای فرم خالی اضافه کردن رشته
- درخواست برای ثبت مشخصات رشته جدید
- درخواست برای حذف یک رشته با شناسه مورد نظر
- درخواست برای ویرایش مشخصات رشته با شناسه مورد نظر
- درخواست برای ثبت تغییرات بعد از ویرایش رشته
مدیریت دانشجویان
هر کاربر در مورد دانشجویان باید دارای امکانات زیر باشد:
- نمایش لیست همه دانشجویان
- نمایش لیست دانشجویان یک رشته
- جستجوی دانشجو بر اساس نام یا شناسه
- اضافه کردن دانشجوی جدید
- حذف دانشجو
- ویرایش دانشجو
و برای امکانات فوق لازم است تا کاربر درخواست های زیر را به سرور بفرستد:
- درخواست برای نمایش لیست دانشجویان
- درخواست برای نمایش لیست دانشجویان یک رشته (با تعیین شناسه رشته)
- درخواست برای نمایش لیست دانشجویان دارای نام یا شناسه خاص (با تعیین شناسه یا نام دانشجو)
- درخواست برای فرم خالی اضافه کردن دانشجو
- درخواست برای ثبت مشخصات دانشجوی جدید
- درخواست برای حذف یک دانشجو با شناسه مورد نظر
- درخواست برای ویرایش مشخصات دانشجو با شناسه مورد نظر
- درخواست برای ثبت تغییرات بعد از ویرایش دانشجو
در بخش بعدی آموزش به پیاده سازی کنترولر در چارچوب mvc را آموزش می دهیم. پس با ما همراه باشید…