MVC در PHP قسمت سوم :: Model - نسخهی قابل چاپ +- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir) +-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1) +--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13) +--- موضوع: MVC در PHP قسمت سوم :: Model (/showthread.php?tid=2207) |
MVC در PHP قسمت سوم :: Model - agotd - 11-28-2013 05:23 PM در این قسمت از سری مقالات MVC در PHP به لایه Model میپردازیم.همینطور که در قسمت اول اشاره شد لایه Model وظیفه ارتباط با پایگاه داده رو داره. در معماری MVC و کلا سیستم هایی که به صورت شیء گرا نوشته میشن معمولا برای هر کدوم از جدولهای دیتابیس یک کلاس جدا باید داشته باشیم. این به این خاطره که کار نگهداری و گسترش در آینده به راحتی انجام بشه .حالا ما هم در این فریم ورک از این روش استفاده میکنیم. لایه Model ( در فریم ورک ما ) برای ارتباط با دیتابیس باید قابلیت های زیر رو داشته باشه : ارتباط با پایگاه داده انجام عملیات اضافه / حذف و ویرایش روی جداول اجرای کوئری های کاربر برای داشتن یک فریم ورک خوب و کاربردی باید یک سری پیش نیازها رو قبل از پیاده سازی لایه Model انجام بدیم.پس قبل از پیاده سازی لایه مدل ما به کلاس های زیرنیاز داریم : کلاس Config برای نگهداری تنظیمات کلاس SqlQuery برای ارتباط با پایگاه داده و اجرای عملیات رو جدول مورد نظر خوب با هم اولین قسمت رو که نوشتن کلاس Config هست انجام میدیم این کلاس وظیفه نگهداری تنظیمات کلی فریم ورک رو بر عهده داره.برای اینکه تنظیمات رو یه جایی نگهداری کنیم راههای مختلفی وجود داره.میتونه این تنظیمات به صورت یک کلاس باشه یا میتونه در یک فایل با پسوند ini ذخیره بشه. برای اینکار ما از یک فایل با نام config.ini و یک کلاس برای دسترسی به تنظیمات ذخیره شده توی این فایل نیاز داریم. یک فایل با نام config.ini توی پوشه library بسازید با این محتویات : کد php: [database] خب یک کلاس با نام Config.php در پوشه library بسازید : کد php: <?php توی این کلاس با استفاده از تابع parse_ini_file محتویات فایل config.ini رو به صورت آرایه در اختیار داریم و سپس با متد Config::get میتونیم به تنظیماتمون دسترسی داشته باشیم. شاید بپرسید چرا از یک فایل ini برای تنظیمات استفاده کردم.جوابم اینه که میخواستم توی این آموزش یک چیز جدید رو باهم تجربه کنیم.شما از هر روشی که دوست دارید میتونید استفاده کنید. مشکلی که این روش داره اینه که اگر کاربر آدرس فایل config.ini رو مستقیم توی مرورگر وارد کنه به تنظیمات ما دستری پیدا میکنه که از لحاظ امنیتی مشکل داره.برای رفع این مشکل خط زیر رو به فایل htaccess اضافه میکنیم : کد php: <Files *.ini> که دسترسی مستقیم به این فایل رو غیرممکن میکنه. بریم به ادامه مطلب که این بار باید کلاسی بسازیم برای ارتباط و انجام عملیات روی دیتابیس. برای اینکه فریم ورکمون انعطاف بیشتری داشته باشه باید کلاسی بنویسیم که بتونه با انواع دیتابیس ها ارتباط برقرار کنه.ما کلاس PDO رو انتخاب میکنیم که از هر لحاظ میتونه به ما کمک کنه : کد php: <?php این کلاس خیلی ساده است که امکان اضافه / حذف / ویرایش و انجام کوئری های مورد نظرمون رو میده. یک دیتابیس با یک جدول بسازید. اسم جدول رو بذارید “articles” و فیلدهای زیر رو بهش اضافه کنید : id title body حالا چندتا ردیف با مقادیر دلخواه به این جدول اضافه کنید. یک پوشه با نام model در پوشه ی app بسازید. یک کلاس در این پوشه با نام articles.php ایجاد کنید و کدهای زیررو داخلش قرار بدید : کد php: <?php همینطور که قبلا هم اشاره کردم نام کلاس باید با نام جدول همنام باشن. کلاس articles از کلاس Model ارث بری کرده و به تمام متدهای public و protected اون دسترسی داره. متغیر $table نام جدول رو میگیره که اگر خالی باشه نام کلاس به عنوان نام جدول در نظر گرفته میشه و متغیر $pk نام کلید اصلی رو نگهداری میکنه. قبل از اینکه کاری انجام بدید یک نکته دیگه رو هم باید اشاره کنم. در سیستم های بزرگ برای جلوگیری از include های پی در پی از تابع autoload استفاده میکنن. با استفاده از کلاس Load ما دیگه نیازی به include کردن کلاسهامون نداریم. کدهای زیر رو به فایل index.php اضافه کنید : کد php: define("LIB_DIR" , ROOT.DS.'library'); و کلاس Load در پوشه library : کد php: <?php با استفاده از متد model میتونیم model مورد نظرمون رو load کنیم. توی کنترلر ArticleController متد view رو اضافه کنید : کد php: <?php با رفتن به آدرس زیر میتونید نتیجه رو مشاهده کنید : ۱۲۷٫۰٫۰٫۱/article/view/2 خب این قسمت هم به پایان رسید.امیدوارم که مفید بوده باشه.اگر نظر یا سوالی در مورد آموزشها دارن میتونن زیر همین مقاله نظر خودشون رو بگن.اگر هم مشکلی توی آموزشها میبینید میتونید بازهم همینجا بگید خوشحال میشم. در قسمتهای بعدی به بررسی لایه های Controller و View میپردازیم. RE: MVC در PHP قسمت سوم :: Model - abbas00 - 01-18-2014 10:33 PM با تشکر از آموزش خوبتون اگه میشه این خط رو که در index.php نوشتید رو توضیح بدبد: spl_autoload_register(array('Load', autolo RE: MVC در PHP قسمت سوم :: Model - agotd - 01-25-2014 01:43 PM دوست عزیز سلام من عذر می خوام هم به دلیل اینکه دیر پاسخگو بودم و هم به خاطر اینکه اون تیکه از کد با مشکل درج شده بود الان درستش کردم باز هم اگر سوالی بود در خدمت هستم با تشکر |