همانطور که از جلسه قبل به یاد دارید کلاسی به نام Register درون Controllers داشتیم که وظیفه مدیریت درخواست هایی را داشت که قرار بود از طرف مرورگر، Views و فرم به آن ارسال شود.
کلاسی که از جلسه قبل ایجاد کرده ایم:

در مثال بالا خصوصیتی به نام data داریم که مقدارش در ابتدا برابر با null است و قرار است مقدار جدیدش را در هنگام ساخت شی و از طریق تابع construct__ دریافت کند.

زمانی که فرم submit می شود اطلاعات فیلد به فایل Register.php درون پوشه Controllers ارسال می شود و شی از روی اطلاعات POST_$ ساخته می شود.

POST_$ یک متغیر عمومی است که دارای اطلاعات فیلدهای فرم است.

 

درباره متد handleRequest

در اسکریپت خود متدی به نام handleRequest ایجاد کرده ایم که وظیفه آن بررسی درخواست ارسالی از طرف view است.

متد handleRequest با توابع نوشته شده در سمت پوشه Models که در واقع پایگاه داده است در ارتباط است.

حال درون تابع handleRequest شرطی را جهت بررسی کردن اینکه آیا فرم اطلاعاتش ارسال شده قرار میدهیم.

مثال:

در صورتی که کاربر مستقیم و بدون کلیک بر روی ثبت اطلاعات فرم وارد بخش Controllers شده باشد دوباره فرم register نمایش داده خواهد شد.شرط بررسی شده خالی بودن مقدار this->data$ است.

حال پس از اینکه مطمعن شدیم که اطلاعات فرم به Controllers ارسال شده است نیاز به این داریم که مقادیر فیلدها را اعتبارسنجی کنیم.به همین منظور می توانیم وظیفه نتیجه بررسی را به یک تابع مکلف کنیم.

بنابراین یک متد از نوع private به نام checkData ایجاد میکنیم که این متد در آخر دو مقدار را برگشت می دهد. در صورت درست نبودن فیلدها مقدار null برگشت داده می شود.در صورت درست بودن می تواند مقدار true برگشت داده شود.

 

متد checkData

این متد یک آرگومان به نام data$ دریافت می کند که همان اطلاعات فیلد است و تمامی اطلاعات فیلد در خصوصیتی به نام this->data$ قرار دارد.

متد checkData را درون متد handleRequest فراخوانی می کنیم.در هنگام استفاده، شرطی قرار می دهیم که null بودن یا نبودن مقدار بازگشتی متد checkData را بررسی می کند.

مثال:

حال درون متد checkData مقادیر مربوط به فیلدها را اعتبارسنجی می کنیم.در این متد مقدار آرگومان ارسالی برابر با this->data$ است که به روش آرایه می توانیم به فیلدهای فرم دسترسی پیدا کنیم.برای مثال: data[“Email”]$

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

مثال:

 

دریافت خطاهای مربوط به فیلدها

در صورتی که کاربر یکی از فیلدها را وارد نکند یا درست وارد نکند باید به کاربر خطای مربوطه را نمایش دهیم. بنابراین یک خصوصیت به نام listError در ابتدای کلاس بصورت public تعریف می کنیم که مقدار پیش فرض آن برابر با آرایه خالی است.

برای بررسی و تنظیم خطای مربوط به فیلدها ابتدا هر فیلد را بصورت مجزا با دستور if بررسی می کنیم و در صورت وجود خطا به آرایه listError یک آیتم بهمراه کلید اضافه می کنیم.

مثال:

در صورت پر کردن تمامی فیلدها بدرستی مقدار null به متد checkData ارسال نخواهد شد در این شرایط می توانیم با پوشه مربوط به Models جهت درج رکورد جدید در پایگاه داده در ارتباط باشیم.

برای ادامه کدنویسی درون شرط if (!is_null($this->checkData($this->data))) با فایل Users.php درون پوشه Models ارتباط برقرار می کنیم.این فایل وظیفه ارتباط با پایگاه داده و درج داده جدید در پایگاه داده دارد.

حال به پوشه Models می رویم و فایل Users.php را ایجاد می کنیم.

 

ایجاد فایل Users.php درون پوشه Models

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

مثال:

 

ارتباط با پایگاه داده

نحوه ارتباط با پایگاه داده و سایر کدنویسی های کلاس Users در جلسات قبل توضیح داده شده است.در اینجا تنها کدها را قرار میدهیم.

مثال:

 

قطع ارتباط با پایگاه داده

مثال:

 

درج کاربر جدید در پایگاه داده

مثال:

 

نمایش خطاهای فرم در خروجی

در این بخش باید پیام های خطا را در فرم خود مشخص کنیم.فایل register.php پوشه Views را باز کرده و بعد از هر فیلد دستور نمایش خطا را می نویسیم.در این فایل برای دسترسی به خطاها از دستور this$ استفاده شده است.علت اینکار این است که در هنگام خطا، این فرم را در فایل register.php مربوط به Controllers نمایش داده ایم.بنابراین به آرایه listError دسترسی خواهیم داشت.

برای چک کردن وجود داشتن یا نداشتن مقدار this$ قبل از ارسال فرم از تابع isset و empty استفاده کرده ایم.

مثال:

حال اگر به مسیر http://localhost/mvc/views/register.php بروید و فرم خود را خالی ارسال کنید خطاهای تعیین شده را مشاهده خواهید کرد و به آدرس http://localhost/mvc/Controllers/register.php هدایت می شوید.

مشاهده خروجی:

 

درج کاربر جدید در پایگاه داده

حال باید در فایل register.php مربوط به Controllers دستور مربوط به درج کاربر جدید را وارد کنیم.

برای شروع فایل Users.php مربوط به Models را درون فایل register.php پوشه Controllers با دستور require_once ضمیمه و فراخوانی می کنیم.

مثال:

سپس به بخش زیر می رویم.

مثال:

در صورتی که خطا وجود نداشته باشد از روی کلاس Users یک آبجکت جدید ایجاد کرده و متد مربوط به insertUser را فراخوانی می کنیم.

درون تابع insertUser مقدار this->data$ که حاوی اطلاعات فرم است را وارد می کنیم.

مثال:

پس از وارد کردن اطلاعات فرم همانطور که مشاهده می کنید کاربر جدید در پایگاه داده ثبت می شود.
فایل مربوط به پروژه بهمراه پایگاه داده جهت تست کردن خدمتتان ضمیمه شده است.

دانلود

دیدگاه خود را بیان کنید

این ایمیل برای عموم منتشر نمی شود