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