PDA

View Full Version : حرفه ای: ساختار MVC



sadegh1362
سه شنبه 19 آذر 1392, 14:49 عصر
در این تاپیک مباحث مربوط به MVC و روش پیاده سازی و مباحث مربوط به آن مطرح می شود از آن جایی که یادگیری و جا افتادن مفهوم MVC برای یاد گیری Framework های حرفه ای php امری اجتناب ناپذیر به نظر می رسد با ایجاد این تاپیک سعی داریم تا به این هدف دست یابیم . از دوستان خواهش می کنم تا فعالیت چشمگیری در این زمینه انجام دهند.

دوستانی که سوالی در مورد MVC دارن می تونن در این تاپیک سوال کنند هم من می تونم کمکشون کنم و هم دوستانی که تمایل دارن لطف کنن و فعالیت کنند. برای شروع من شروع می کنم تا سر بحث باز بشه .

sadegh1362
سه شنبه 19 آذر 1392, 15:07 عصر
مطلبی که باید برای شروع به اون بپردازم URL ها در مدل مهندسی نرم افزار MVC است که در این مدل باید بتونه controller ها رو از URL بخونه ، این مطلب مهمی در MVC است اما به نظرم زیاد بهش توجه نمی شه . در ساختار MVC توابع controller از url خونده می شن و پارامتر ها هم همینطور ، اگه ساختار MVC از URL کار نکنه اصلا MVC نیست .!!!
ساختار URL ها در MVC به این شکله :
http://yourdomain/controllerfile/controllerfunction/param1/param2/param3.....این یک استاندارد برای MVC است که شما از این طریق فایلی که کد کنترلر رو در اون نوشتین صدا می زنین و توابع مربوط به اون رو صدا می زنین . و پارامترهای مربوط به اون تابع رو از URL براش می فرستین .
و یادمون باشه که ما هیچ وقت در url های مدل MVC پسوند php. رو نمی بینیم که این خودش می تونه راهی برای شناخت سایتهایی که با روش نوشته می شن باشه

H:Shojaei
سه شنبه 19 آذر 1392, 22:19 عصر
سلام...
من كه خيلي مشتاقم در اين باره
پس اولين سوال:
چطور اين نمونه آدرس دهي و واكشي اون انجام ميشه؟
يعني چطور ما با نوشتن مثلا /param ميتونيم به يه تابع تو يكي از لايه‌ها دسترسي داشته باشيم؟
ممنون از تاپيك خوبي كه ايجاد كرديد...

sadegh1362
چهارشنبه 20 آذر 1392, 12:14 عصر
در MVC نرمال برای این کار باید یک فایل bootstrap.php داشته باشید که مقدار های url رو دریافت کنه و بتونه کنترلر و نام action رو دریافت کنه و به فایل های مورد نظر ارسال کنه یعنی بعد از این که نام کنترلر رو خوند باید کلاس اون رو new کنه و تابعی که باز از url خونده از اون کلاس صدا بزنه و پارامتر رو براش ارسال کنه .
یعنی این فایل bootstrap.php به شکل یک مسیر یاب عمل می کنه . که این مسیر یاب با تحلیل مقادیر url کار می کنه .

pswin.pooya
جمعه 22 آذر 1392, 00:47 صبح
یعنی این فایل bootstrap.php به شکل یک مسیر یاب عمل می کنه . که این مسیر یاب با تحلیل مقادیر url کار می کنه .
بهتره بجای فایل از دیتابیس استفاده شه

sadegh1362
جمعه 22 آذر 1392, 00:55 صبح
(http://barnamenevis.org/member.php?34511-pswin.pooya)سلام آقای pswin.pooya (http://barnamenevis.org/member.php?34511-pswin.pooya) بله حرف شما درسته اما اینجا بحث پایه ای از MVC مطرحه نه مسیر یاب به معنای ,MVC-R و این مسیر یابی در حالت سه لایه مد نظره

abolfazl-z
جمعه 22 آذر 1392, 10:32 صبح
آقا MVC یک الگو هست که طرح شده شاید برای بعضی برنامه نویس ها درک اش خوب باشه ولی برای بعضی ها مثل من ضعیف که بنده روش های بهتری از MVC را در کارام استفاده می کنم ولی باز هم یک جاهاییش به MVC ختم میشه ولی در یک قسمت دیگه کلا MVC رو میزاره کنار.
در کل کسی که اومد این طرح رو اختراع کرد انسان بوده و همیشه و همه جا یک طرح توی همان ورژن باقی نمی مونه و شاید همین شما که دارین برنامه نویسی می کنید یک طرحی بهتر از MVC پیاده سازی می کنید که خودتون متوجه نیستید که این طرح یکی از بهترین طرح های دنیا هست (حالا برای مثال عرض کردم).
اینو یادتون باشه که هیچ وقت در کاراتون به محدود بودن قانع نشوید، به نامحدود بودن فکر کنید !
شاید این اتفاق برای شما هم رخ داده که اصلا مفهوم MVC رو نمیدونستین چی هست ولی بعد از مطالعه فهمیدین که در برنامه هاتون چقدر از MVC استفاده کردین که شیوه کاری خودتون بوده.

pswin.pooya
جمعه 22 آذر 1392, 10:52 صبح
سلام

MVC یک مدل خیلی قدیمی از برنامه نویسی است مه سالیان سال در برنامه نویسی های ویندوز توسط معمولا برنامه نویسهای C/C++ مخصوصا برنامه نویسهای MS VC++ استفاده میشده. یکی از ایده های اساسی پشت این الگو که باعث محبوبیت اون شده. قسمت View است که شما می تونید داده خودتون رو به چند صورت مختلف نمایش بدید. البته این مدل دارای نقاط ضعف زیادی هم هست. مثلا نحوه برقراری ارتباط مابین هر کدوم از کامپوننتهای Model، Controller و view همیشه جای بحث بوده. ( مخصوصا از نظر به روز رسانی Model بر اساس view به صورت آنی ). به هر حال این الگوی برنامه نویسی روی وب جواب داده و استفاده زیادی داشته.

الگوهای برنامه نویسی زیادی وجود دارن که کاربردهای خودشون رو دارن مثلا الگوی به اسم الگوی استراتژیک وجود داره که در برنامه نویسی های پردازش تصویری زیاد استفاده میشه. مبنای این الگو اینه که شما به راحتی می تونید الگوریتم پردازشی خودتون رو بدون تغییر در برنامه عوض کنید. یا الگوی رفتاری مانند ماشینهای متنهای (FSM) وجود داره که در هوش مصنوعی ، بازی سازی و کامپایلرهای ( مخصوصا lexer) کاربرد داره و یا الگوهای فوقالعاده پیچیده تری مثل Data Oriented که هدف بهینه سازی سرعت رو دارن

مطرح شدن الگوهای برنامه نویسی چند دلیل داره:

۱. کاهش یچیدگی برنامه
۲. افزایش سرعت تولید
۳. کاهش خطا ها با کاهش پیچیدگی
۴. افزایش امکان تولید کد بیشتر به دور از پیچیدگی بیشتر.

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


شاید این اتفاق برای شما هم رخ داده که اصلا مفهوم MVC رو نمیدونستین چی هست ولی بعد از مطالعه فهمیدین که در برنامه هاتون چقدر از MVC استفاده کردین که شیوه کاری خودتون بوده.

این درسته اما نحوه پیاده سازی هم خیلی مهم هست.

sadegh1362
شنبه 23 آذر 1392, 08:13 صبح
سلام
در مورد ساختار mvc در php باید بگم که هدف جداسازی سه موجودیت در کدهای database ، html و کنترل داده است که شما به هر صورتی کد ها تون رو بنویسید مجبور هستید که از این سه مجودیت استفاده کنید در برنامه نویسی وب این سه تا اجتناب ناپذیر هستن ، در این جدا سازی ذهن شما از پیچیدگی های بیهوده رها می شه ، در mvc شما با کلاس های پایه و مشتق های اونها می تونید به راحتی ذهنتون رو از حاشه ها و پیچیدگی های کد نویسی وب آزاد کنید و به کیفیت برنامه نویسی فکر کنید به علاوه اینکه سرعت کار شما رو بسیار افزایش می ده .
شاید یکی از دلایلی که این ساختار قدیمی حالا در وب مخصوصا برنامه نویسان php محبوب شده همین باشه که شما رو به سرعت به هدفتن می رسونه و از دوباره کاری رها می کنه .
مطلب بسیار مهم دیگه اینه که framework های معروف php مثل yii , codeigniter , ... به طور کامل از ساختار MVC در ساختارشون استفاده کردن و شما اگه با اون ها برنامه نویسی کنین میبینین که یک MVC نویس قوی شدین .
و مطلب آخر اینکه اگر MVC درست پیاده سازی شده باشه امنیت پروژه رو بالا می بره .

sadegh1362
دوشنبه 25 آذر 1392, 12:10 عصر
در برنامه نویسی به سبک MVC شما با حالتی از برنامه نویسی آشنا می شید که شما رو از حالت خشک برنامه نویسی با php رها می کنه و شما رو به سمت هدف های بالا تر سوق میده .

sadegh1362
دوشنبه 09 دی 1392, 09:46 صبح
سلام
مطلبی که در این پست براتون مطرح می کنم مبحث R-MVC در این قالب MVC فایلی به نام router وجود داره که url وارد شده رو ابتدا بررسی می کنه . بعد اشیا مورد نیاز اون رو بعد از بررسی امنیتی url برای جلو گیری از url های مشکوک new می کنه. و در این حالت شما تنها شی کنترلر new میشه.