PDA

View Full Version : آموزش: MVC به زبان ساده



MMSHFE
یک شنبه 09 تیر 1392, 13:14 عصر
با سلام خدمت دوستان محترم، یک اسلاید آموزشی درست کردم که میخواستم توی نشست بعدی نهاد توی بابل درموردش یک کارگاه یکروزه تشکیل بدم که از اونجا که تا حالا نظرسنجی طوری پیش رفته که بیشتر تمایل داشتن یک پروژه عملی توی کارگاه انجام بشه، تصمیم گرفتم این اسلاید رو برای دانلود و مطالعه در اختیار دوستان بگذارم.
لینک دریافت:
http://www.ncis.ir/articles/67/MVC (http://www.ncis.ir/articles/67/MVC)
خوشحال میشم نظر دوستان رو درباره این آموزش بدونم. اگه احیاناً سؤالی هم بود توی همین تاپیک مطرح کنید.

farazsahebdel
یک شنبه 09 تیر 1392, 13:20 عصر
با سلام خدمت دوستان محترم، یک اسلاید آموزشی درست کردم که میخواستم توی نشست بعدی نهاد توی بابل درموردش یک کارگاه یکروزه تشکیل بدم که از اونجا که تا حالا نظرسنجی طوری پیش رفته که بیشتر تمایل داشتن یک پروژه عملی توی کارگاه انجام بشه، تصمیم گرفتم این اسلاید رو برای دانلود و مطالعه در اختیار دوستان بگذارم.
لینک دریافت:
http://www.ncis.ir/articles/67/MVC (http://www.ncis.ir/articles/67/MVC)
خوشحال میشم نظر دوستان رو درباره این آموزش بدونم. اگه احیاناً سؤالی هم بود توی همین تاپیک مطرح کنید.

این لینک که خرابه :ناراحت:

MMSHFE
یک شنبه 09 تیر 1392, 13:21 عصر
لینک سالمه. به لطف برخی دوستان، پهنای باند ماهانه سایت تمام شده و درنتیجه باید تا اول ماه میلادی بعدی (گمونم فردا باشه) صبر کنید تا دوباره سایت بیاد بالا!

engmmrj
یک شنبه 09 تیر 1392, 17:58 عصر
لینک سالمه. به لطف برخی دوستان، پهنای باند ماهانه سایت تمام شده و درنتیجه باید تا اول ماه میلادی بعدی (گمونم فردا باشه) صبر کنید تا دوباره سایت بیاد بالا!
یعنی برخی دوستان dos attack زدند ؟

$ M 3 H R D A D $
یک شنبه 09 تیر 1392, 20:25 عصر
اسلاید و حای دیگه ایلود کنید زمان طلاست !

navid3d_69
یک شنبه 09 تیر 1392, 23:09 عصر
من 10 تا فیلم دارم البته زبان انگلیسی هست از ابنتدا mvc رو یاد میده تا ajax در mvc و یک cms کوچک با mvc درست می کنه کاملا هم خوب آموزش میده خودم می خواستم به صورت یک pdf فارسی درست کنم یک مقداری هم انجام دادم ولی وقت ندارم اگر کسی انجام میده با مدیران هماهنگ کنه من این فیلم هارو آپلود کنم که دانلود کنه و آموزش رو توی سایت بزاره

Veteran
یک شنبه 09 تیر 1392, 23:29 عصر
اگه بزاری که خیلی خوبه

SilverLearn
دوشنبه 10 تیر 1392, 00:01 صبح
اسلاید و حای دیگه ایلود کنید زمان طلاست !




منم موافقم :)

MMSHFE
دوشنبه 10 تیر 1392, 09:08 صبح
فایل اسلاید به پست اول همین تاپیک ضمیمه شد.

MMSHFE
دوشنبه 10 تیر 1392, 13:54 عصر
از دوستان عزیزی که آموزش رو دریافت و مطالعه کردن تقاضا میکنم اگه نظری درموردش دارن، بیان کنن چون همین سبک آموزش (ازنظر سادگی بیان) قراره مبنای کار در ادامه تاپیک آموزش مرحله به مرحله PHP قرار بگیره و اونجا، با همین روند، MVC رو بطور کامل و با جزئیات بیشتر آموزش بدیم.

rezaonline.net
دوشنبه 10 تیر 1392, 14:19 عصر
تشکر مفید بود .
یه کلاس رجیستری هم برای نگه داشتن آبجکت کنترلر ها و مدل ها و احیانا کلاسهای دیگری که بعنوان کامپوننت استفاده خواهند شد ، لازم بود پیاده سازی کنید .

MMSHFE
دوشنبه 10 تیر 1392, 14:26 عصر
این آموزش در ساده ترین حالت بوده. توی آموزش جامع که بعداً میگذارم، موارد مختلفی مثل Singleton و Registry و Factory و... همه به تفصیل و با مثال توضیح داده میشه.

eshpilen
دوشنبه 10 تیر 1392, 14:30 عصر
از دوستان عزیزی که آموزش رو دریافت و مطالعه کردن تقاضا میکنم اگه نظری درموردش دارن، بیان کنن چون همین سبک آموزش (ازنظر سادگی بیان) قراره مبنای کار در ادامه تاپیک آموزش مرحله به مرحله PHP قرار بگیره و اونجا، با همین روند، MVC رو بطور کامل و با جزئیات بیشتر آموزش بدیم.
خیلی خوب بود.
بهترین مطلب در این زمینه که تاحالا دیده بودم.
هم بقدر کافی مختصر بود هم ساده و هم جامعیت خوبی داشت.

تشویق شدم که وارد MVC بشم.
شاید آموزشهای قبلی بخاطر همون اشتباهات که شما اشاره کردید و نقص و ابهامهایی که داشتن باعث شده بودن بقدر کافی به MVC علاقمند نشم (متوجه میزان کارایی و اهمیتش در زمینهء رفع مشکلات برنامه های بزرگ و پیچیده نشده بودم).

eshpilen
دوشنبه 10 تیر 1392, 14:37 عصر
راستی یه جایی همین امروز میخوندم که کامپوننت گرایی و MVC با هم رابطهء چندان خوبی ندارن.
یعنی MVC طراحی سیستمهای کامپوننت رو خیلی دشوارتر میکنه ظاهرا.
البته به این هم اشاره کرده بود که حالا این مبحث کامپوننت هم همه چیز نیست و لزومی نداره اصلا سیستم کامپوننتی باشه (بخصوص در وب ظاهرا).
حالا من نمیدونم دقیقا منظور چیه.
اصولا باید اول کامپوننت و اینها رو تعریف و روشن کنیم.
یعنی کامپوننت چیه، و مثلا فرقش با پلاگین و ماجول و Addon و اکستنشن چیه و چرا MVC طراحی کامپوننت رو دشوار میکنه.

amin7x
دوشنبه 10 تیر 1392, 15:23 عصر
آموزش خوبی بود.
راستی آقای شهرکی میخواستم بدونم اون کتابی معرفی کردید از انتشارات Apress هست؟

miladwwe2013
دوشنبه 10 تیر 1392, 17:25 عصر
اموزش عالی بود!

میشه ی اموزش cmsمتوسط با mvcمثال بزنید؟
ممنون اقای شهرکی

navid3d_69
دوشنبه 10 تیر 1392, 17:58 عصر
آموزش خوبی بود.
راستی آقای شهرکی میخواستم بدونم اون کتابی معرفی کردید از انتشارات Apress هست؟

فکر می کنم Apress باشه من نمی دونم چه کتابی رو معرفی کردند ولی یکی از بهترین کتاب های MVC برای انتشارات Apress هست توی google book هم می تونین رایگان بخونین

Veteran
دوشنبه 10 تیر 1392, 18:22 عصر
من توی MVC متد هارو همه استاتیک میزارم
به نظر شما صحیح هست ؟
======
نوید فیلمایی که گفتی رو میزاری ؟

MMSHFE
سه شنبه 11 تیر 1392, 08:09 صبح
متد static باید بعنوان آخرین راهکار و جایی که دیگه هیچ چاره ای ندارین، مورد استفاده قرار بگیره چون اگه قرار بود همه متدها رو static بگذاریم و با کمک اسم کلاس بهش دسترسی پیدا کنیم و دیگه شئ و کپسوله سازی و... مطرح نباشه، خوب چه کاریه، با همون توابع معمولی کار میکردیم!

MRmoon
سه شنبه 11 تیر 1392, 18:32 عصر
آقاي شهركي ميشه اون cms ساده اي ه در جلسات 7 و 8 آموزشتون ساخته بودين با MVC بنويسين ؟؟؟؟

چون اونجوري بهتر ياد ميگيريم.

بعد من يه جا خونده بودم MODEL براي دسترسي به ديتابيس هست ... يعني اينا اشتباه آموزش داده بودن؟

MMSHFE
سه شنبه 11 تیر 1392, 18:50 عصر
نه اشتباه نیست. من هم که گفتم Model برای دسترسی به دیتابیس هست.

MRmoon
سه شنبه 11 تیر 1392, 19:01 عصر
نه اشتباه نیست. من هم که گفتم Model برای دسترسی به دیتابیس هست.

پس ويو رو بايد خارج از كنترلر صدا بزنيم؟

MMSHFE
سه شنبه 11 تیر 1392, 19:23 عصر
بله، همه کلاسها (شامل model و view و controller) بیرون از این عناصر (توی فایل اصلی که معمولاً index.php هست) فراخوانی میشن. منتها کنترلر به مدل و ویو به هر دو شئ دیگه دسترسی داره تا درصورت نیاز، از کنترلر بخواد به مدل دستور بده داده های خاصی رو در اختیارش بگذاره.

MRmoon
سه شنبه 11 تیر 1392, 19:32 عصر
بله، همه کلاسها (شامل model و view و controller) بیرون از این عناصر (توی فایل اصلی که معمولاً index.php هست) فراخوانی میشن. منتها کنترلر به مدل و ویو به هر دو شئ دیگه دسترسی داره تا درصورت نیاز، از کنترلر بخواد به مدل دستور بده داده های خاصی رو در اختیارش بگذاره.

آقاي شهركي ميشه اين رو انجام بديد؟

آقاي شهركي ميشه اون cms ساده اي ه در جلسات 7 و 8 آموزشتون ساخته بودين با MVC بنويسين ؟؟؟؟

اين طوري يه مثال عملي هم هست ...

Yuness Mehdian
سه شنبه 11 تیر 1392, 20:47 عصر
با تشکر از آقای شهرکی خیلی آموزش ساده و مفیدی بود.از دوستان کسی هست که این کتاب رو گیر آورده باشه؟ (pro PHP MVC)

spiderman200700
سه شنبه 11 تیر 1392, 21:33 عصر
Pro PHP MVC
http://uploaded.net/file/mp2uz9o7

arta.nasiri
سه شنبه 11 تیر 1392, 22:20 عصر
آقاي شهركي ميشه اون cms ساده اي ه در جلسات 7 و 8 آموزشتون ساخته بودين با MVC بنويسين ؟؟؟؟

چون اونجوري بهتر ياد ميگيريم.

بعد من يه جا خونده بودم MODEL براي دسترسي به ديتابيس هست ... يعني اينا اشتباه آموزش داده بودن؟

در اصل Model برای دسترسی به داده هامون چه در دیتابیس و چه در آرایه ها و امثال ایناست!!

navid3d_69
چهارشنبه 12 تیر 1392, 00:37 صبح
من توی MVC متد هارو همه استاتیک میزارم
به نظر شما صحیح هست ؟
======
نوید فیلمایی که گفتی رو میزاری ؟

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

MMSHFE
چهارشنبه 12 تیر 1392, 08:05 صبح
آقاي شهركي ميشه اين رو انجام بديد؟
اين طوري يه مثال عملي هم هست ...
اگه خدا بخواد و فرصت کنم، توی خود تاپیک آموزش PHP از جلسه 16 به بعد که به MVC اختصاص داره (جلسه 15 تکمیل و جمع بندی مباحث شئ گرایی هست)، همون CMS رو با اصول و استانداردهای جدید (HTML5 و CSS3 و MVC و...) بازنویسی میکنیم.

Variable
چهارشنبه 12 تیر 1392, 18:15 عصر
سلام . خیلی ممنون . ایا باز ادامه داره ؟
خیلی خوب بود . منتها من یک خطا میگیرم . نمیدونم دلیلش چیه
http://img.ir/wRQ.gif

arta.nasiri
چهارشنبه 12 تیر 1392, 18:54 عصر
سلام . خیلی ممنون . ایا باز ادامه داره ؟
خیلی خوب بود . منتها من یک خطا میگیرم . نمیدونم دلیلش چیه
http://img.ir/wRQ.gif

سلام
کدتون درسته. فقط چک کنید که قبل از EOT پایانی هیچ whitespaceای وجود نداشته باشه.

ولی تو عکسی که گذاشتین 2 تا خطا وجود داره، بهتره کدتون رو اینجا قرار بدید که بررسی کنیم

redhat2
چهارشنبه 12 تیر 1392, 21:11 عصر
دوستان من این کد پیاه را هم برای MVC نوشتم ، یه MVC ساده هستش ، اگه میخواید می تونید بررسیش کنید و و اگه سوالی هم داشته باشین می تونم به شما پاسخ بدم ، راستی اگه دیدین که میتونه بهترش بشه یا یه جاهایی را بد رفتم ، ممنون میشم که راهنماییم کنید .

MMSHFE
پنج شنبه 13 تیر 1392, 09:35 صبح
خیلی خوب بود . منتها من یک خطا میگیرم . نمیدونم دلیلش چیه
دلیلش اینه که بعد از EOT>>> احتمالاً توی کد شما Space اضافه تایپ شده. دقت کنید که بعد از Delimiter توی خط شروع HereDoc و قبلش توی خط پایانی، هیچ Whitespace Character خاصی (شامل Tab و Space و...) نباید وجود داشته باشه.

habibvafapour
دوشنبه 17 تیر 1392, 03:56 صبح
من یه مدت هست که دارم افزونه های جوملا طراحی میکنم هیچ وقت نمیدونستم که دارم از روش mvc استفاده میکنم
فقط یه مشکل هست کدوم رابطه بین قسمت ها درست هست ؟ چیزی که شما میگین یا چیزی که جوملا میگه ؟
این عکس توی سایت جوملا بودش

MMSHFE
دوشنبه 17 تیر 1392, 05:37 صبح
این تصویر مربوط به ساختار قدیمی MVC هست و ساختار جدید، همون تصویری هست که توی اسلاید گذاشتم و توی ویکیپدیا هم در صفحه MVC گذاشته شده.

jamejam123
سه شنبه 18 تیر 1392, 19:03 عصر
سلام من تازه شروع به یادگیری php کردم
mvc یاد بگیرم خوبه یا شی گرا
فرق این دوتا چیه

Veteran
سه شنبه 18 تیر 1392, 20:55 عصر
برای پیاده سازی معماری MVC باید اول شی گرایی بلد باشیم

MMSHFE
سه شنبه 18 تیر 1392, 21:59 عصر
البته یادگیری شئ گرایی کمک خیلی زیادی توی اجرای بهتر MVC میکنه ولی لزوماً ضرورتی نداره حتماً از شئ گرایی استفاده بشه و MVC رو بصورت Procedural هم میشه مورد استفاده قرار داد. اصولاً قدمت MVC بیشتر از OOP هست.

jamejam123
سه شنبه 18 تیر 1392, 23:54 عصر
یه سوال دیگه داشتم
خالی با php هم می شه وبسایت فوق العاده ای ساخت
اونوقت اینا به چه درد می خورن.

MMSHFE
چهارشنبه 19 تیر 1392, 07:40 صبح
گویا مطالب رو بطور کامل و دقیق نخوندین. بله دوست عزیز، بدون MVC و OOP و... هم میشه وبسایت فوق العاده ساخت ولی بعد از مدتی اگه پروژه بزرگ بشه و بخواین افزونه های مختلفی بهش اضافه کنید و این بخشها رو مدیریت کنید و کد مرتباً تغییر کنه، اونوقت در بین انبوهی از کدهای نامرتب و بهم ریخته که هر بخش با تمام بخشهای دیگه ارتباط تنگاتنگ و مدیریت نشده داره، گرفتار خواهید شد. Design Patternها برای حل اینگونه مشکلات درست شدن.

Variable
چهارشنبه 19 تیر 1392, 17:57 عصر
سلام
مهندس شهرکی . یه سوال .
من اگه تو قالب HTML یک قسمتی داشته باشم که به نام
content
بعد تو صفخه اول یک فرم درش باشه .
و بعد از پر کردن فرم . در صفخه دوم همون قسمت مشخصات کاربر نمایش داده شده باشه
سوالم اینجاست که
این فرم باید تو مدل قرارداشته باشه یا تو ویوو

MMSHFE
چهارشنبه 19 تیر 1392, 18:04 عصر
توی View باید بگذارین چون بهرحال مربوط به نمایش اطلاعات میشه و مدل فقط وظیفه استخراج اطلاعات از منابع ذخیره سازی مثل فایل و دیتابیس و سایر سایتها و... رو برعهده داره.

Variable
چهارشنبه 19 تیر 1392, 18:40 عصر
خب من تو مثال شما فرمم رو اینجوری اضافه کردم . توی فایل
main.view
این خط رو اضافه کردم

$t->Assign('form',$this->model->form);
ودر فایل main.model


$this->form="<form method='GET' action='clicked' >
id:<input type='text' name='id'/><br />
user:<input type='text' name='uname'/><br />
password:<input type='password' name='pass' /><br />
<input type='submit' />
</form>";

الان این درست کار میکنه. منتها شما چیجوری این فرم رو تو فایل کلاس view قرار میدید؟

qartalonline
چهارشنبه 19 تیر 1392, 23:05 عصر
ممنون آقای شهرکی واقعا عالی بود.

با اجازه آقای شهرکی
تو این لینک (http://boplo.ir/php/what-is-mvc/) بصورت خیلی ساده در حد مبتدی مطلبی وجود داره.

MMSHFE
چهارشنبه 19 تیر 1392, 23:34 عصر
خب من تو مثال شما فرمم رو اینجوری اضافه کردم ...
ببینید، عنصر فرم باید توی کلاس view باشه نه توی کلاس مدل. بعد توی main.view باید بنویسید ;(t->Assign('form', $this->form$
مدل فقط وظیفه استخراج اطلاعات از پایگاه داده ها و یا ذخیره کردن نتایج کارها توی اون رو برعهده داره و اصلاً هیچ چیزی بجز این نباید داخلش باشه (چه فرم، چه هرگونه کد دیگه). تمام اینها وظیفه View هست. کنترلر هم که کارش مشخصه: دریافت ورودیهای کاربر و دستور دادن به مدل برای استخراج داده های مناسب از پایگاه داده ها تا بعداً View از اونها استفاده کنه.

hadi0x7c7
پنج شنبه 20 تیر 1392, 01:09 صبح
سلام

شما به این میگید اسلاید ؟ به نظر من که این اصلا شبیه یه اسلاید نیست و بیشتر یه جزوه هستش، البته قصد بدی ندارم ولی تا اونجایی که میدونم توی اسلاید نباید ما بیام کل داستان و از ب بسم الله بگیم البته این ایراد من به طراحی هستش نه به محتوا.

MMSHFE
پنج شنبه 20 تیر 1392, 08:13 صبح
دوست عزیز، اگه پست اول رو کامل و با دقت میخوندین، متوجه میشدین که این اسلاید چرا اینطوری شده. قرار بود اول اسلاید باشه و تیتر مطالب داخلش باشه و بعد، توی کارگاه آموزشی درباره اسلایدها توضیح داده بشه ولی بعداً چون موضوع MVC توسط اکثریت اعضا انتخاب نشد، توضیحات رو هم بهش اضافه کردم تا بصورت خودآموز در بیاد. حالا مشکل فقط فرمته؟ PDF بگذارم خوبه؟ بهتره بجای ساختار و ظاهر، درمورد محتوا بحث و تبادل نظر کنیم. اینطور نیست؟

engmmrj
جمعه 21 تیر 1392, 01:01 صبح
استاد شما گفتتین بین لایه view و controller ارتباطی وجود ندارد ولی در این کتا چیزی دیگه ایی گفته که کتابشم جدیده.(apress mvc)
ولی تو ویکی پدیا حرف شما رو زد .
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
البته وقتی زبان رو فارسی میکنی عکس ویکی پدیا عوض میشه که زده view با controller ارتباط داره :
http://fa.wikipedia.org/wiki/%D9%85%D8%AF%D9%84-%D9%86%D9%85%D8%A7-%DA%A9%D9%86%D8%AA%D8%B1%D9%84%E2%80%8C%DA%AF%D8%B 1
و شما گفته بودی در 1970 اولین بار مورد استفاده قرار گرفته ویکی پدیا زده در سال 1979
107050

engmmrj
جمعه 21 تیر 1392, 01:19 صبح
ولی این ارتباط جدیدی که شما میگی به نظرم بهتره .
این ارتباط که شما گفتی چه برتری هایی نسبت با اون ارتباط ها داره ؟

MMSHFE
جمعه 21 تیر 1392, 13:47 عصر
نه من منظورم دهه 1970 بود. شاید اشتباهاً گفتم سال 1970 اما درهرحال، نسخه انگلیسی ویکیپدیا بروزتره و کتاب Apress هم خیلی جدید نیست و توی حوزه IT تغییرات حتی ممکنه روزانه اتفاق بیفته. بهرحال این ایده اصلی که بخشهای مختلف پروژه از هم جدا باشن، منطق اصلی MVC هست و فکر میکنم راهکار جدید MVC بهتر این هدف رو پیاده سازی میکنه و اگه به این شکل عمل نکنیم، Controllerهای خیلی حجیم و در عوض، Model و View خیلی کوچک خواهیم داشت و عملاً توزیع مناسبی ازنظر بار کاری روی بخشهای مختلف نداریم. اما توی معماری جدید، View که مسئولیت نمایش داده ها رو برعهده داره، بطور طبیعی بزرگتر و پررنگتر از بقیه بخشها خواهد شد و در عین حال، بخشهای مختلف بطور تقریباً متعادل و مساوی در انجام اهداف پروژه دخیل خواهند بود.

engmmrj
جمعه 21 تیر 1392, 14:00 عصر
اگر بخواهیم یک لایه اضافه کنیم ارتباط لایه ها به چه صورت میشود . میشه یک مثال بزنید.

Mohammadxml
جمعه 21 تیر 1392, 18:09 عصر
البته یادگیری شئ گرایی کمک خیلی زیادی توی اجرای بهتر MVC میکنه ولی لزوماً ضرورتی نداره حتماً از شئ گرایی استفاده بشه و MVC رو بصورت Procedural هم میشه مورد استفاده قرار داد. اصولاً قدمت MVC بیشتر از OOP هست.
سلام مهندس شهرکی.روش استفاده از MVC بصورت Procedural چطوریه؟
اگه امکانش هست مثال لاگینی که توی این لینک (http://boplo.ir/php/what-is-mvc/) با استفاده از کلاس گفته رو بصورت Procedural توضیح بدین؟

parvizwpf
جمعه 21 تیر 1392, 18:27 عصر
منظور پروسیجر نویسی سمت دیتابیس رو میگید؟

Mohammadxml
جمعه 21 تیر 1392, 19:09 عصر
منظورم اینه که در برنامه اصلا از شی گرایی(OOP) استفاده نکنم.
یعنی به صورت کلاسیک برنامه بنویسم.نه اینکه نمیخوام شی گرایی کارنکنم بعدا حتما کار می کنم.

iranweb91
جمعه 21 تیر 1392, 20:32 عصر
دوستان mvc قدیم را میتوان در فریم ورکهای کیک مشاهده نمود.روش جدید را هم در فریم ورک ای
به نظر بنده mvc خیلی عالیه اما mvc که دست کاربر را محدود نکنه.به نظر بنده در ci بحث mvc خیلی خوب و انعطاف پدیر پیاده شده.
به نظر بنده ساختار برنامه نویسی خوبه که ثابت نباشه چون دیگه میشه یک ابزار نه برنامه نویسی

MMSHFE
شنبه 22 تیر 1392, 09:32 صبح
سلام مهندس شهرکی.روش استفاده از MVC بصورت Procedural چطوریه؟
اگه امکانش هست مثال لاگینی که توی این لینک (http://boplo.ir/php/what-is-mvc/) با استفاده از کلاس گفته رو بصورت Procedural توضیح بدین؟
توی مثال اون لینک که گذاشتین که یک مشکل عمده وجود داره که توی کامنتهای همون سایت هم اشاره کردم (نوشتن کوئری توی کنترلر و ارسال به مدل برای اجرا). اما درهرحال، مثال فوق رو بدون شئ گرایی (اما به روش صحیح) بازنویسی کردم تا ببینید چطور میشه:
1- View


<?php
if(isset($result) && count($result) > 0) {
// Login successful, do something here
}
else {
?>
<form action="" method="post">
<?php echo (isset($message) ? '<p>' . $message . '</p>' : ''); ?>
<table>
<tr align="left"><th>Username:</th><td><input name="username" type="text" /></td></tr>
<tr align="left"><th>Password:</th><td><input name="password" type="password" /></td></tr>
</table>
<input type="submit" value="Login" />
</form>
<?php
}
?>
2- Model


<?php
function Connect() {
$con = mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('myDB', $con) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
return $con;
}
function GetRows($fields) {
$result = array();
if(!is_array($table, $fields, $count)) {
return false;
}
$count = (is_int($count) ? intval($count) : 0);
$con = Connect();
$table = Escape($table);
$where = '1=1';
foreach($fields as $fieldName => $fieldValue) {
$fieldName = Escape($fieldName);
$fieldValue = Escape($fieldValue);
$where .= " AND `{$fieldName}`='{$fieldValue}'";
}
$query = mysql_query("SELECT * FROM `{$table}` WHERE ({$where}) ORDER BY `id` LIMIT {$count}");
if($query && mysql_num_rows($query) > 0) {
while($row = mysql_fetch_assoc($query)) {
$result[] = $row;
}
}
return $result;
}
function Escape($str) {
$con = Connect();
return mysql_real_escape_string($str, $con);
}
?>
3- Controller


<?php
require_once 'model.php';
if(isset($_POST['username'], $_POST['password'])) {
$params = array(
'username' => $_POST['username'],
'password' => md5($_POST['password'])
);
$result = GetRows('users', $params, 1);
$view = 'login-form.php';
require_once $view;
}
?>
البته این فقط یک مثاله و قطعاً وقتی پروژه بزرگتر میشه، قدرت شئ گرایی هم بیشتر به چشم میاد چون مباحثی مثل توابع همنام و... مطرح میشه (وقتی همزمان به چند مدل، ویو یا کنترلر نیاز پیدا کنیم) که این مباحث توی شئ گرایی و بخصوص با کمک قابلیت namespace به راحتی قابل رفع خواهد بود.

Veteran
شنبه 22 تیر 1392, 13:55 عصر
جناب شهرکی من توی MVC برای هر جدول از دیتابیس یک مدل و یک کنترل به اسم همون جدول دارم.
وقتی اینارو اینکلود میکنم به مشکل بر میخورم.به همین دلیل مجبورم اسم یکی از کلاس هارو تغییر بدم.
امکانش هست که این مشکل برطرف بشه ؟ یعنی ما بتونیم 2 تا کلاس همنام داشته باشیم و موفعه اینکلود به مشکل بر نخوریم ؟!

MRmoon
شنبه 22 تیر 1392, 14:28 عصر
جناب شهرکی من توی MVC برای هر جدول از دیتابیس یک مدل و یک کنترل به اسم همون جدول دارم.
وقتی اینارو اینکلود میکنم به مشکل بر میخورم.به همین دلیل مجبورم اسم یکی از کلاس هارو تغییر بدم.
امکانش هست که این مشکل برطرف بشه ؟ یعنی ما بتونیم 2 تا کلاس همنام داشته باشیم و موفعه اینکلود به مشکل بر نخوریم ؟!
نميشه دوتا كلاس هم نام داشت!

MMSHFE
شنبه 22 تیر 1392, 14:38 عصر
با namespace میشه ولی راه درستی نیست. بهتره اسامی واضح و بدون ابهام بگذارین. مثلاً users_model و...

diaoko89
شنبه 22 تیر 1392, 15:20 عصر
سلام جناب شهرکی
خسته نباشید
بابت این تاپیک پر ارزش ازتون متشکرم
بنده قبلا در دوران دانشجویی پروژه پایانی ام رو بر اساس معماری سه لایه(mvc) پیاده سازی کردم ولی وقتی این تاپیک رو مطالعه کردم فهمیدم که اشتباهاتی در کارم بوده و خودم خبر نداشتم و از این بابت ازتون متشکرم
سوال برام پیش اومده،میخوام بدونم رابطه معماری سه لایه با برقراری امنیت از دید شما چطوری هست؟آیا تاثیر گذاره یا نه باید از تکنیک های دیگر استفاده کرد برای برقراری امنیت؟منظورم اینه که معماری سه لایه چقدر به امنیت وب سایت کمک میکنه؟
با تشکر

MMSHFE
شنبه 22 تیر 1392, 15:32 عصر
بطور مستقیم MVC و کلاً معماری چندلایه تأثیری روی امنیت نداره. منظورم اینه که به خودی خود باعث ایجاد امنیت نمیشه اما از این جهت که به شما کمک میکنه منطق برنامه رو از استخراج اطلاعات و نمایشش جدا کنید، باعث میشه که فکرتون توی کد آزادتر باشه و مباحث امنیتی رو بهتر زیرنظر داشته باشین. مثلاً توی Model تمام کارهای لازم برای امن کردن ورودیهایی که قراره توی کوئری بکار برن و توی دیتابیس ذخیره بشه و... درنظر بگیرین و توی View تمام کارهایی که برای Escapeکردن خروجی که قراره برای کلاینت ارسال بشه انجام بدین تا درمقابل حملاتی مثل JS Injection و... ایمن باشید. تمام این کارها رو هم درحالی میتونید انجام بدین که Controller که منطق پردازش ورودیهای کاربر و انتخاب عملیات مناسب براساس اونها رو داره، دیگه درگیر مباحث امنیتی مثل SQL Injection و امثالهم نمیشه.

Mohammadxml
شنبه 22 تیر 1392, 19:18 عصر
سلام آقای شهرکی.ببخشید من اگه بخوام مثال لاگینی که در بالا زحمت کشیدین توضیح دادین رو اجرا کنم یعنی توی پوشه ی www کپی کنم چه فایلهایی رو باید کپی کنم و بعد صفحه ی index.php چی میشه و اینکه اگه بخوام پروژه خودمو با مدل mvc بدون شی گرایی بنویسم جهت توسعه پروژه تمام کدهای من باید داخل این سه فایل ذخیره بشه؟(منظورم اینه ساختارشو بلد نیستم).
مثلا باید کل کدهای طراحی (css ,javascript,jquery) باید توی قسمت view وارد بشه؟و...

MMSHFE
یک شنبه 23 تیر 1392, 09:10 صبح
باید یک فایل index بسازین با یک مدل، ویو و کنترلر اصلی که index این فایلها رو فراخوانی میکنه و کنترلر اصلی، برحسب پارامترهای ورودی کاربر، مدل، ویو و کنترلرهای دیگه رو صدا میزنه (مثلاً login). برای ساختار ذخیره سازی هم میتونید به اشکال مختلف عمل کنید. مثلاً همه مدلها توی یک پوشه، همه ویوها توی یک پوشه و همه کنترلرها توی یک پوشه جداگانه و اسم فایل هرکدوم، اسم ماژولی باشه که براش درنظر گرفتین. مثلاً:


controllers
login.php
logout.php
models
login.php
logout.php
views
login.php
logout.php

یا اینکه یک پوشه components بسازین و توی اون پوشه، برای هر بخش یک پوشه فرعی بسازین و فایلهاش رو داخلش قرار بدین:


components
login
controller.php
model.php
view.php
logout
controller.php
model.php
view.php

یا اینکه همه فایلها رو توی پوشه components بگذارین و اسم هر بخش رو پیشوند اسم فایلهاش بگذارین:


components
login_controller.php
login_model.php
login_view.php
logout_controller.php
logout_model.php
logout_view.php

بهرحال این ساختار، تا حدود زیادی دست خودتونه و مهمتر از اون، منطقی هست که روی MVC حاکمه و باید رعایت کنید.

Mohammadxml
یک شنبه 23 تیر 1392, 20:04 عصر
باید یک فایل index بسازین با یک مدل، ویو و کنترلر اصلی که index این فایلها رو فراخوانی میکنه و کنترلر اصلی، برحسب پارامترهای ورودی کاربر، مدل، ویو و کنترلرهای دیگه رو صدا میزنه (مثلاً login).
ببخشید این تیکه رو متوجه نشدم.
اگه لطف کنید محتویات فایل index.php رو برام بذارین و یا مثال عملی لاگینی که برام نوشتین (به طور کامل) رو برای دانلود بذارین ممنون میشم.

engmmrj
دوشنبه 24 تیر 1392, 22:06 عصر
استاد جواب ما رو نداد ی؟

اگه بخوایم به صورت اختیاری یک لایه یا چند لایه اضافه کنیم باید ارتباط لایه ها رو چه جوری ارتباط بدیم ؟

MMSHFE
سه شنبه 25 تیر 1392, 08:15 صبح
گفتم که، بستگی به طراحی خودتون داره. اینکه لایه اضافه شده برای چه کاری درنظر گرفته شده. مثلاً اگه لایه جدید، وظیفه کار با موتور قالب رو داره، باید بعد از View قرار بگیره یا اگه وظیفه خنثی کردن کدهای مخرب جهت نمایش صحیح توی خروجی رو داره، باید بین Model و View باشه. اما قبل از تمام اینها، باید دید آیا واقعاً اون لایه اضافه لازمه یا میشه توی همین لایه ها قرارش داد؟

2undercover
سه شنبه 25 تیر 1392, 09:18 صبح
سلام. با توجه به اینکه ارتباطی بین Controller و View وجود نداره توی یک سیستم Login ساده کاربر اطلاعات رو وارد می کنه و Controller بر حسب اطلاعات کار های مربوط به ورود مثل بررسی صحیح بودن و مقدار دهی Session رو انجام میده که حالا دو حالت وجود داره یا ورود موفقه یا ناموفق خب با توجه به چیزی که قبلا گفتم که ارتباطی بین Controller و View نیست لایه ی View باید چه جوری تشخیص بده که ورود موفق بوده یا ناموفق که اطلاعات صحیحو نمایش بده!

آیا Controller باید موفق یا ناموفق بودن رو توی Model ذخیره کنه و View با توجه به چیزی که توی Model هست اطلاعاتو نمایش بده؟!اگه اینجوری بشه ما توی لایه View باید if else داشته باشیم؟

MMSHFE
سه شنبه 25 تیر 1392, 09:30 صبح
ببینید، مسئله دقیقاً همینه که در معماری جدید MVC هیچ اشکالی نداره که View دارای دستورات شرطی و... باشه. اما به شرطی که همونطور که خودتون اشاره کردین، این شرطها صرفاً بررسی یکسری پارامتر باشه که کنترلر تنظیم میکنه و براساس اونها، خروجی View عوض میشه. البته دقت کنید که Controller لزوماً نباید داده های Model رو برای مثال لاگین تغییر بده بلکه خودش میتونه سشن بسازه و توی View وجود/عدم وجود سشن بررسی بشه. این مسئله با ارسال اطلاعات از Controller به View فرق میکنه چون سشن سراسریه و همه بهش دسترسی دارن. یه چیزی مثل متغیرهای سراسری.

Tarragon
سه شنبه 25 تیر 1392, 11:39 صبح
با سلام و تشکر بسیار از زحمات شما یه سوال داشتم:
اینکه یک سری فانکشن ها مثل multihash قرار در چند صفحه مورد استفاده قرار بگیرن جای این فانکشن ها کجاست؟
یعنی کجا قرار ذخیره بشن؟
ممنونم.

MMSHFE
سه شنبه 25 تیر 1392, 12:05 عصر
اینها معمولاً توی یک پوشه جداگانه و تحت عنوان Library قرار میگیرن. بطور کلی به اینها نمیشه گفت یک لایه جداگانه هستن چون توی تمام لایه ها مورد استفاده قرار خواهند گرفت.

Mohammadxml
سه شنبه 25 تیر 1392, 23:33 عصر
سلام آقای شهرکی.ببخشید جواب پست بالا رو که زدم ندادین.
لطف کنید و نگاهی به این فایل بندازید هیچ کدنویسی انجام ندادم و میخوام بدونم ساختاری که در mvc باید داخل پوشه ی www درست کنم اینطوریه؟

MMSHFE
پنج شنبه 27 تیر 1392, 11:51 صبح
دوست عزیز، ساختار رو که گفتم دست خودتونه. مهم نحوه کدنویسیه.

Mohammadxml
پنج شنبه 27 تیر 1392, 19:18 عصر
سلام ببخشید آقای شهرکی لطف کنید کمی در مورد نحوه کدنویسی(کدنویسی mvc بدون شی گرایی(Procedural ) و با شی گرایی) توضیح بدین و یا سایت هایی جهت آموزش معرفی کنید.
اگه لطف کنید یه مثال عملی (کد نویسی بدون شی گرایی) بذارین ممنون میشم.

desatir7316
پنج شنبه 27 تیر 1392, 19:55 عصر
سلام دوستان
این آموزش هم عالیه: لینک دانلود (http://forum.dverleech.com/showthread.php?t=9218)
من خودم تا قبل این اصلا نمی تونستم mvc کار کنم، فقط زبان اصلیه حواستون باشه
ببخشید اگه جای بدی پست می دم، من خودم می خواستم این آموزش رو آپلود کنم ولی اینجا پیداش کردم

MMSHFE
جمعه 28 تیر 1392, 17:13 عصر
دوست عزیز، این شکل مربوط به معماری قدیمه. معماری جدید همونطور که توی اسلایدها اشاره شده، کلاً شکل کار رو تغییر داده. هرچند این شکل هم به نظرم اشتباه باشه چون Model فقط از کنترلر دستور میگیره (در هر دو معماری قدیم و جدید) و تفاوت معماری قدیم و جدید در اینه که در قدیم، Controller داده ها رو از Model میگرفت و تحویل View میداد ولی در معماری جدید، View خودش این اطلاعات رو دریافت میکنه و کنترلر این وسط نقشی نداره.

2undercover
شنبه 29 تیر 1392, 10:02 صبح
توی اون نمونه برنامه ای که شما نوشته بودید لایه ی View یک نمونه از شئ Controller رو در اختیار داشت. می خواستم ببینم چه نیازیه که View به Controller دسترسی داشته باشه؟

MMSHFE
شنبه 29 تیر 1392, 10:41 صبح
قبلاً بهش اشاره کردم. بخاطر اینکه درصورت نیاز به تغییر داده های Model، از کنترلر بخواد دستورات لازم رو به Model بده.

Mohammadxml
یک شنبه 30 تیر 1392, 19:19 عصر
سلام دوستان یه نگاهی هم به این لینک ها بندازین ببین کدومش برای ساختار mvc بهتره؟
http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/
http://stackoverflow.com/questions/1983240/appropiate-mvc-structure-for-a-forum
http://www.onextrapixel.com/2012/03/14/a-detailed-overview-of-the-model-view-controller-mvc-coding-structure/

سلام آقای شهرکی اگه نمونه مثال عملی (لاگین توسط Procedural mvc) از شما درخواست کردم رو نمی تونید بذارید لطف کنید سایت آموزشی معرفی کنید چون من هر چی گشتم با کلاس برنامشو نوشته بودن.شرمنده من نتونستم بنویسمش.

MMSHFE
یک شنبه 30 تیر 1392, 19:42 عصر
دوست عزیز، من که کدهای لازم رو براتون نوشتم. اگه فقط index مونده، بفرمایید تا اون رو هم بنویسم ولی کار خاصی نیست و خودتون هم میتونید بنویسید.

Veteran
یک شنبه 30 تیر 1392, 21:19 عصر
جناب شهرکی میشه یک نمونه که در اون دیتابیس هم به کار رفته باشه بنویسین ؟
طوری که من فهمیدم برای هر جدول از دیتابیس یک مدل داریم که در این مدل کارهای مربوط به اون جدول مثل اضافه کردن ویرایش و.... انجام میشه
درسته ؟

Mohammadxml
یک شنبه 30 تیر 1392, 23:39 عصر
شرمنده آقای شهرکی من توی این پست این تیکه رو متوجه نشدم و یه سری دیگه هم از شما پرسیدم ولی جوابی بهش ندادین.

باید یک فایل index بسازین با یک مدل، ویو و کنترلر اصلی که index این فایلها رو فراخوانی میکنه و کنترلر اصلی، برحسب پارامترهای ورودی کاربر، مدل، ویو و کنترلرهای دیگه رو صدا میزنه (مثلاً login).

این لینکو که برای دانلود گذاشتم نگاه کنید اگه منظور شما این بود پس لطف کنید بگید، کد logout.php و login.php رو چطوری باید بنویسم؟
107695
و خواهشا اگه علاوه بر index.php اگه باز لازمه کدنویسی بشه بگید که چه فایلی و چطوری؟ آقای شهرکی ممنونم میشم این برنامه رو طوری تکمیلش کنید که وقتی توی پوشه ی www ریختم اجرا بشه.
یه سوال دیگه کدهای java یا css کجا باید زده بشن؟
خدا کنه تونسته باشم منظورمو برسونم.

MMSHFE
دوشنبه 31 تیر 1392, 01:54 صبح
ظرف همین یکی دو روز براتون یک مثال کامل از login و logout با MVC بصورت Procedural آماده میکنم.

Mohammadxml
پنج شنبه 03 مرداد 1392, 01:13 صبح
سلام آقای شهرکی لطفا در مورد پیاده سازی معاری 3 لایه (three-tier programming) در php هم توضیح و مثال می زنید.

MMSHFE
پنج شنبه 03 مرداد 1392, 08:59 صبح
این هم از مثال Procedural MVC که قولش رو داده بودم. دقت کنید که این فقط یک مثال خیلی کوچکه که یکی از روشهای پیاد هسازی MVC رو بصورت رویه گرا و بدون شئ گرایی نشون میده و فقط دو جزء Login و Logout رو پیاده سازی میکنه. البته توی همین مثال کوچک هم میشه فهمید شئ گرایی چقدر به ساده شدن این برنامه میتونه کمک کنه. توضیحات لازم درمورد نحوه نصب و تست پروژه توی فایل ReadMe.txt موجوده. فقط یک نکته مهم برای کارکردن این برنامه اینه که mod_rewrite توی Apache باید فعال باشه تا کار کنه. موفق باشید.

Mohammadxml
پنج شنبه 03 مرداد 1392, 15:13 عصر
سلام آقای شهرکی این خطاها چیه میده؟
mod_rewrite توی Apache رو فعال کردم.

بعد از کلیک رو Login خطای زیرو میده؟
107915

MMSHFE
پنج شنبه 03 مرداد 1392, 19:44 عصر
يك پوشه توي www به اسم pmvc بسازين و فايلها رو داخل اون بگذارين.

silencer
پنج شنبه 03 مرداد 1392, 20:15 عصر
سلام،من با ساختار mvc یک قسمت کوچیک نوشتم برای نمایش عنوان و مطالب یک جدول،اگه وقت دارید یک نگاه بکنید ببینید با استاندارد جدید مطابقت دارد یا نه

Mohammadxml
جمعه 04 مرداد 1392, 01:13 صبح
سلام شرمنده آقای شهرکی یه مشکل دیگه اینکه وقتی رو لاگین (عکس error1) کلیک میکنم خطای زیرو میده و توی نوار آدرس اینو ADDR/login اضافه میکنه و کار دیگه ای انجام نمیده؟ http://localhost/pmvc/ADDR/login
Notice: Use of undefined constant ADDR - assumed 'ADDR' in C:\wamp\www\pmvc\library\view.php on line 13
Login (http://localhost/pmvc/ADDR/login)

MMSHFE
جمعه 04 مرداد 1392, 12:33 عصر
دوست عزیز، اگه فایلها به درستی توی پوشه pmvc قرار گرفته باشن، مشکلی پیش نمیاد چون ثابت ADDR توی فایل config.php که توی اون پوشه قرار داره، تعریف شده. دقت کنید که باید حتماً ازطریق آدرس localhost/pmvc وارد سایت بشین تا فایل config در ابتدای فایل index ضمیمه بشه و ثابتهایی که توش تعریف شده، بارگذاری بشن.

silencer
جمعه 04 مرداد 1392, 18:42 عصر
منتظر پاسخ:لبخندساده:

wallfa
شنبه 05 مرداد 1392, 12:22 عصر
عالی بود اقای شهرکی ، ولی امیدوارم روی زبان فارسی مانور بدیم . چون این چیزی که طراحی شده به نظرم به زبان فارسی بر به مشکل می خوره !

علاقه مند به همکاری برای ساخت یه مدل ام وی سی در گیت هاب !

silencer
دوشنبه 07 مرداد 1392, 23:18 عصر
سلام،من با ساختار mvc یک قسمت کوچیک نوشتم برای نمایش عنوان و مطالب یک جدول،اگه وقت دارید یک نگاه بکنید ببینید با استاندارد جدید مطابقت دارد یا نه

هنوز منتظر.............؟!!!؟؟؟!:ناراحت:

MMSHFE
سه شنبه 08 مرداد 1392, 08:58 صبح
شرمنده که اینقدر چک کردن کد شما طول کشید. راستش خیلی سرم شلوغ بود. کدی که نوشتین خیلی خوب بود. فقط چند مورد اصلاحات انجام شد که بیشتر، ریزه کاری بود و اصول کلی رو رعایت کرده بودین. کد اصلاح شده رو اینجا (http://uplod.ir/h5ad3ryhvmp1/mvc.zip.htm) آپلود کردم.

redhat2
سه شنبه 12 شهریور 1392, 19:43 عصر
سلام ، من یه login ساده نوشتم میتونید بررسی کنید ، ممنون .

css-man
جمعه 15 شهریور 1392, 12:18 عصر
من مثالهای توی پاور پوینت رو انجام دادم مثال اول که یه رشته رو اکو میکنه ولی با این ارور برخورد کردم مشکل چیه
هرچی چک میکنم چیزی دستگیرم نمیشه

Notice: Trying to get property of non-object in C:\xampp\htdocs\mvcshahraki\view\view.php on line 15

css-man
یک شنبه 17 شهریور 1392, 19:28 عصر
دوستان نمیشه کسی جواب بده؟

MMSHFE
دوشنبه 18 شهریور 1392, 09:34 صبح
یه جایی توی تنظیمات مشکل دارین. کدهاتون رو بطور کامل بگذارین یا ایمیل کنید یا اطلاعات TeamViewer رو برام پیام خصوصی کنید تا به سیستمتون وصل بشم ببینم مشکل کجاست.

redhat2
جمعه 22 شهریور 1392, 19:21 عصر
سلام ، من یه login ساده نوشتم میتونید بررسی کنید ، ممنون . سلام آقای شهرکی میشه یه نگاهی هم به mvc ما بندازین . ممنون . توی پستا ی بالا لینکش هست .

olampiad
سه شنبه 09 مهر 1392, 18:37 عصر
سلام
mvc دقیقا یعنی چی؟
الآن من واسه پروژم کتابخونه درست می کنم و توابع رو از اون فراخوانی می کنم.
به نظرتون دارم ام وی سی تشکیل می دم؟
بدون کتابخونه هم می شه ام وی سی درست کرد
آیا بدوم دونستن oop می شه ام وی سی درست کرد.
ممنون

olampiad
چهارشنبه 10 مهر 1392, 00:19 صبح
سلام
کتابی در این مورد سراغ دارید؟

MMSHFE
چهارشنبه 10 مهر 1392, 09:29 صبح
فایل ضمیمه رو خوندین؟ MVC اون چیزی که الآن دارین پیاده سازی میکنید نیست. یکبار دیگه به دقت فایل رو بخونید. کتاب هم Pro PHP MVC خوبه.

abd1mr
پنج شنبه 09 آبان 1392, 12:43 عصر
به لطف آقای شهرکی و دوستان یه چیزایی از MVC فهمیدم. ولی من شنیدم به تازگی HMVC جای اون را گرفته. میشه لطفا بفرمائین این دیگه چه صیغه ایه؟

Emir New
شنبه 11 آبان 1392, 21:52 عصر
سلام
من موقع اجرا کردن برنامه اقای شهرکی با این متن روبه رو میشم



Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.


باید چکار کنم ؟

MMSHFE
شنبه 11 آبان 1392, 22:07 عصر
این خطا مربوط به اسکریپت نیست. از htaccess. استفاده کردین؟

Emir New
شنبه 11 آبان 1392, 22:56 عصر
بله
من خودم از فایل htaccess. خاصی استفاده نکردم از همان فایلی هست که خود شما درون سورس خود قرار دادید
می خواستم بدونم باید چکار کنم تا این صفحه بره ؟
البته به غیر از پاک کردن فایل htaccess.

برای راحتی کار شما من کدها htaccess رو همین جا می ذارم


Options +FollowSymLinks
RewriteEngine On
RewriteBase /pmvc
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L,NC,QSA]

abd1mr
شنبه 11 آبان 1392, 23:36 عصر
کسی جواب ما رو نمیده؟:ناراحت:

MMSHFE
شنبه 11 آبان 1392, 23:50 عصر
اگه اسم پوشه رو چیزی غیر از pmvc گذاشتین، توی خط سوم، همون اسم رو بجای pmvc بگذارین (اسلش باید باشه). اگر هم توی پوشه root سرور کپی کردین، خط سوم رو کلاً حذف کنید.

Emir New
یک شنبه 12 آبان 1392, 21:27 عصر
با تشکر از اقای شهرکی که وقتشون رو گذاشتن
خدمت شما عرض کنم پوشه رو تغییر نام ندادم مسیری هم که برنامه رو اجرا می کنم به شکل زیر هست
http://127.0.0.1:8081/pmvc
برنامه شما رو من دارم روی لوکال اجرا می کنم
و از برنامه WAMP هم استفاده می کنم
ولی همچنان مشکل پا برجا هست

MMSHFE
یک شنبه 12 آبان 1392, 22:01 عصر
خوب وقتی پورت رو دارین تغییر میدین، باید اون رو هم مشخص کنید. این کد htaccess. رو تست کنید:


Options +FollowSymlinks
RewriteEngine On
RewriteBase /pmvc
RewriteCond %{HTTP_PORT} ^8081$
RewriteRule ^(.*)$ /index.php?url=$1 [NC,L]

Emir New
یک شنبه 12 آبان 1392, 22:19 عصر
این کد شما رو عینا کپی کردم و هنوز با این پیغام مواجه هستم


Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.

MMSHFE
دوشنبه 13 آبان 1392, 08:11 صبح
راستش تا اینجا چیزی که از مشکل شما میشه فهمید اینه که مسئله سر همون تغییر پورت پیشفرض Apache هست. توی اینترنت دنبال htaccess rules with non default apache port on localhost جستجو کنید ببینید چی گیرتون میاد.

Emir New
سه شنبه 14 آبان 1392, 20:00 عصر
مشکل من حل شد
این هم کد هایی که استفاده کردم


<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /pmvc

RewriteCond %{SERVER_PORT} !^8081$
RewriteRule .* http://127.0.0.1:8081/index.php?url=$1 [L]
</IfModule>

MMSHFE
سه شنبه 14 آبان 1392, 20:18 عصر
آخ ببخشید شرمنده اصلاً یادم نبود که پورت غیر 80 جزو HTTP محسوب نمیشه و باید از SERVER_PORT استفاده بشه. بهرحال خوشحالم که مشکلتون رفع شد.

abd1mr
پنج شنبه 16 آبان 1392, 12:07 عصر
به لطف آقای شهرکی و دوستان یه چیزایی از MVC فهمیدم. ولی من شنیدم به تازگی HMVC جای اون را گرفته. میشه لطفا بفرمائین این دیگه چه صیغه ایه؟

تو رو خدا اگه چیزی میدونید بگید.:گریه:

redhat2
جمعه 17 آبان 1392, 19:43 عصر
این hmvc چیزه خاصی نیست ، در حقیقت بیشتر برای پروژه های بزرگ استفاده میشه ، شما کلا پروژه تون را با یه mvc میویسین ولی در hmvc میان و برای قسمت های مختلف mvc های مختلف استفاده میکنن ، یعنی هر تیکه از برنامه خودش یک الگوی mvc داره ، همینطور که گفتم تویه پروژه های بزرگ استفاده میشه ، همین ، چیزه خاصیم نیست ، یه search بزنین به نتایج خوبی میرسین .

lilac8
چهارشنبه 29 آبان 1392, 19:25 عصر
کتاب http://prefiles.com/ac5e4qedn88v/Apress.Pro.PHP.MVC.Nov.2012.rar pro php mvc


اموزشی از ام وی سی به تاپیک آموزش مرحله به مرحله PHP از پايه با مثال اضافه شده؟
توی عناوین ندیدم :افسرده:

olampiad
پنج شنبه 30 آبان 1392, 10:56 صبح
سلام
من کد نویسی php متوسط رو تازه تموم کردم.
حالا وارد mvc می شم.
یه سوال داشتم
کار این تابع چیه ؟
construct__
توابعی که به ابن صورت با __ شروع می شوند چه کاربرد هایی دارند؟
بی نهایت ممنون

olampiad
پنج شنبه 30 آبان 1392, 11:04 صبح
من این مدل رو از روی توضیحات استاد شهرکی ساختم.
حالا موندم کار تابع construct__ تو هر کدوم از کلاس ها چیه؟
ممنون




<?php
class model{
public $string;
public function __construct(){
$this->string="php + mvc";
}
}




class controler{
public $model;
function __construct($model){
$this->model=$model;
}
}




class view{
public $controler;
public $model;

public function __construct($model,$controler){
$this->model=$model;
$this->controler=$controler;
}
function output(){
return '<p>'.$this->model->string.'<p>';
}
}


$model=new model();
$controler=new controler($model);
$view=new view($model,$controler);

echo $view->output();
?>

olampiad
شنبه 02 آذر 1392, 19:44 عصر
سلام و خسته نباشید به اساتید عزیز
لطفا به این پروِه ساده یه نگا بندازید.
می شه بگید تونستم mvc رو توش پیاده سازی کنم یا نه.
http://s1.picofile.com/file/8101450268/mvc.zip.html
تشکر فراوان

H:Shojaei
یک شنبه 03 آذر 1392, 14:26 عصر
سلام
من کد نویسی php متوسط رو تازه تموم کردم.
حالا وارد mvc می شم.
یه سوال داشتم
کار این تابع چیه ؟
construct__
توابعی که به ابن صورت با __ شروع می شوند چه کاربرد هایی دارند؟
بی نهایت ممنون


سلام
construct__ ربطي به مدل MVC نداره از مباحث شيگرايي (OOP) هست.
در حقيقت بهش ميگن سازنده ي كلاس يعني تو اين متغيرهاي كلاس مقدار دهي ميشن و يا كارهاي ديگه مثلا تو MVC اضافه كردن لايه هاي مختلف و وقتي شما يه شي جديد از كلاس ميسازيد به صورت خودكار تابع construct__ صدا زده ميشه و هرچي هم توش باشه اجرا ميشه.

H:Shojaei
یک شنبه 03 آذر 1392, 15:16 عصر
جناب شهركي تشكر از اسلايد خوبتون.
من يه سوال كلي داشتم...
اول يه ساختار كلي بگم:
الآن مثلا يه كاربر مياد واسه ثبت نام يه فرم تو View بهش نمايش داده ميشه بالاي اين فرم يه متغير Message واسه اين كه به كاربر اطلاع بديم چه كرده echo ميشه بعد اطلاعاتش رو وارد ميكنه و اين اطلاعات ميره به Controller اين لايه بررسي ميكنه كه مثلا فيلدها خالي نباشن و... (validation) (كه البته اگر نخوايم با js اينا رو انجام بديم تو خود ويو) حالا اين اطلاعات فرستاده ميشن به Model قطعا بايد از طريق Model با يه تابع درج بشن تو ديتابيس اين يه نمونه درج اطلاعات.
حالا كاربر مياد و درخواست نمايش پروفايلشو ميده يه فرم داريم يه لينك توشه كه يه تابع از Controller رو صدا ميزنه يه فايل ويو داريم كه فرم نمايشي اين اطلاعات به همراه مقاديري كه يه پروفايل داره رو داريم و متغيرهايي هست كه هر كدوم سر جاي خودش قرار گرفته تا به صورت پويا مقدار دهي بشن و نمايش داده بشه، حالا كاربر مياد و درخواستش رو به Controller ميده Controller تابع مربوطه از Model رو فراخواني ميكنه Model اطلاعات رو استخراج ميكنه و به View ميفرسته اين هم يه نمونه نمايش اطلاعات.
اول اين كه اين ساختا كه نوشتم همون ساختار MVC به طور كامل هست و اشكالي نداره؟
و دوم اين كه چطور فرم رو نمايش بديم و متغير هايي كه تو فرم هست رو با اين مقادير كه تو Model هستن و از ديتابيس در آورديم تركيب كنيم يا اين مقادير رو به View بفرستيم؟
با تشكر

olampiad
سه شنبه 05 آذر 1392, 11:25 صبح
سلام
می شه چند تا سایت که به روش mvc طراحی شده نام ببرید.
بی نهایت ممنون

olampiad
پنج شنبه 07 آذر 1392, 00:40 صبح
چرا کسی جواب نمده؟

olampiad
پنج شنبه 07 آذر 1392, 14:17 عصر
سلام
لطفا به این دو پرو‍زه 3 کیلوبایتی یه نگا بندازید.
http://s2.picofile.com/file/8101946118/mvc.rar.html
به نظرتون تو کدومش به طور خوب mvc رعایت شده.
به کدوم یک از اینا ام وی سی جدید میگن.
بی نهایت ممنون

mahmod2000
پنج شنبه 07 آذر 1392, 15:42 عصر
دوتا MVC ها رو دیدم
اصلا جالب نبودن و پایه اصولی رو رعایت نکردن
view فقط برای نمایش هست.. اصل نباید به این صورت با کلاس بندی در خود view تعریف بشه
فایل mvc1 حالا باز خوبی ای که داشت نمایش رو توی template انجام میداد.. ولی باید توی view انجام بشه
اصل کار mvc بین controller و model انجام میشه و view یک کلاس نمایش فقط میشه براش تعریف کرد که هر فایل view ای که خواستیم include کنیم و مقدار هاش رو واسش بفرستیم برای نمایش

البته این نظرات در حد دانش من بود
موفق باشید

olampiad
پنج شنبه 07 آذر 1392, 17:23 عصر
سلام
تشکر فراوان از دوست عزیز بابت پاسخ
می شه یکی دو تا پروِزه ساده که خودتون به صورت mvc در آوردین یا تو اینترنت سراغ دارید مثال بزنید.
یه پروِزه ساده که با دیتابیس هم یه ارتباط کوچیکی داشته باشه؟
بی نهایت ممنون

mahmod2000
پنج شنبه 07 آذر 1392, 20:37 عصر
من پیشنهاد میکنم فایل های پست اول تاپیک زیر رو حتما دانلود کنید و ببینید
http://barnamenevis.org/showthread.php?406782-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1%DB%8C-MVC-%D8%A7%D8%B2-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%AA%D8%A7-%D8%A7%D9%86%D8%AA%D9%87%D8%A7

olampiad
شنبه 09 آذر 1392, 17:48 عصر
چرا کسی سری به این تاپیک نمی زنه؟

MMSHFE
یک شنبه 10 آذر 1392, 11:23 صبح
دوست عزیز، این تاپیک بصورت آموزش هست نه رفع اشکال. توی تاپیکهای اینچنین، معمولاً سؤالات مرتبط با همون مباحث آموزش داده شده مطرح میشه و برای سؤالاتی مثل «اینی که من ساختم، درسته یا نه» یا «کدوم یکی از این دو روش درسته» و... بهتره تاپیک جداگانه ایجاد کنید. تاپیکهای آموزشی صرفاً بصورت ارائه مقاله هستن و سؤالاتی که درمورد تفهیم مباحث همون مقاله مطرح میشن رو در بر میگیرن. مقالات، یک موضوع رو آموزش میدن و اینکه شما چقدر تونستین اون مباحث رو پیاده سازی کنید، بستگی به خودتون داره. با اینحال اگه میخواین دیگران کمکتون کنن، تاپیک جداگانه ایجاد کنید.