زبان php با طعم MVC و چندتا چیز دیگه

چرا با mvc کار کردم ؟ الگوی طراحی MVC چیستمدتی میشه که سعی میکنم کدنویسی php را در قالب mvc انجام بدم اینطوری خیلی سرعت برنامه نویسی پروژه هام زیاد میشه و خیالم از نظر امنیت هم بیشتر میشه .اوایل فکر میکردم mvc مختص یه زبان خاص مثلا برای asp mvc یا همچین چیزایی هست در حالیکه بعد از مطالعه و تحقیق درباره ی mvc فهمیدم که mvc به هیچ زبان یا تکنولوژی خاصی وابسته نیست و مستقل عمل میکنه .خب اگر شما یه نگاه کوتاهی به فریمورک های حاضر و آماده ی PHP بیاندازید میبینید که همگی بدون استثنا از MVC استفاده میکنند .ام وی سی نه تنها سرعت توسعه را میبره بالا بلکه بخاطر جداسازی کدهای بخش دیتابیس از کدهای مرکزی و کدهای رابط کاربری باعث افزایش چشم گیر امنیت میشهباگ گیری پروژه ها راحت تر میشه چون هر بخش جداست و داره کار خودش رو میکنه بهتر و راحت تر میتونید فایل های php تان را مدیریت کنید .چطور MVC را وارد پروژه ی PHP کنیم ؟‌خیلی از دوستام میپرسن چطور mvc را در پروژه ی PHP وارد کنیم خب یه طوری میپرسن انگار MVC یک فایل افزودنی هست که دانلود کنیم و بعد با ترفند هایی به PHP اضافش کنیم نه اینطوری نیست .باید بدانید که mvc یک شیوه است یک الگوی طراحی است که باید از قوانینش تبعیت کنید .یعنی قرار نیست عملا چیزی به پروژه اضافه کنیم یا کسر کنیم قراره پروژه را سازماندهی کنیم و کدها را مرتب کنیم و هر کدام را جای خودش بنویسیم این کاریه که MVC میکنهولی پیش نیازهای کار با mvc چیه ؟‌قبل از اینکه بخواهید با php الگوی mvc را پیاده سازی کنید قطعا باید ابتدا خود زبان برنامه نویسی php را بلد باشید .خب پس آشنایی و بلد بودن خود php اولین پیش نیاز شماستولی از آنجایی که دائما با کلاس ها و متد ها و بحث هایی مثل وراثت و ... سر و کار خواهید داشت شی گرایی دومین پیش نیاز برای شروع و کار با php mvc است .چه کارهایی میتونم با PHP MVC انجام بدم ؟‌اگه از من بپرسید میگم هر کاری که در زمینه ی وب بخواد انجام بگیره ... از فروشگاه اینترنتی گرفته تا یک سایت خبری و ...من خودم برای یادگیری PHP MVC از دوره ی آموزشی استاد نیک زاد استفاده کردم که در قالب یک دوره ی آموزشی ساخت یک فریمورک برای php ( بله ! یک فریمورک ) بصورت mvc را تدریس میکنند که واقعا فوق العاده بود و شما هم میتونید باهاش شروع کنید. میتونید جزئیات دوره را اینجا ببینید.برای تهیه این دوره عکس دوره را براتون میزارم به همراه لینک تا هم حمایتی باشه هم اگر نیاز داشتید استفادش کنیددوره ی آموزش PHP MVC استاد نیک زاداما یک مشکل اساسی دیگر که باید بدونیداین mvc یک معماری سه لایه نیستسالهاست که در دانشگاه ها و آموزش ها میگن معماری سه لایه mvc ... :(‌ حتی من سر این موضوع با خیلی ها بحث کردم و حتی یه استاد بخاطر همین موضوع کلی مسخرم کردبرای روشن شدن موضوع بریم سراغ تعریف معماری سه لایه یه چند لایه در مهندسی نرم افزارخب برای روشن شدن موضوع من منبع اصلی انگلیسی میدم بخونید .درباره ی معماری سه لایه اینجا کلیک کنید و درباره ی mvc اینجا کلیک کنید .خب با مطالعه ی منابع بالا شاید متوجه شده باشید که تفاوت اصلی معماری سه لایه یا چند لایه با mvc در اصل اینه که در mvc اصلا بحث لایه بندی پروژه و سیستم نیست و سیستم در همون یک لایه فعالیت خودش را انجام میده در حالیکه معماری سه لایه ، سه سیستم از یک سیستم بصورت مجاز میسازد که هر کدام درون خودش فعالیتشان را میکنند و نتیجه ی خروجی را بهم ارسال میکنند .پس هرگز mvc معماری سه لایه نبوده و نیست . ممکنه خود mvc در یکی از لایه های معماری سه لایه قرار بگیره ولی خودش معماری نیست بلکه یک الگوی طراحی سادست .تصویر زیر هم خیلی کمک میکنه تا مسئله ی تفاوت بین MVC و معماری سه لایه را درک کنیدتفاوت معماری سه لایه با MVCهمانطور که در تصویر بالا میبینید mvc یا همان بخش های model view controller درون بالاترین لایه ی یک سیستم معماری سه لایه قرار گرفته یعنی لایه ی presentation ...و این نشون میده که این دو مفهوم جدایی هستندپایان