در این بخش قصد داریم تا روش مدیریت و کنترل خطاها را در فریم‌ورک Codeigniter به شما آموزش دهیم.


هنگام برنامه‌نویسی به هر زبانی و با هر ابزاری، مطمئنا خطاهای مختلفی ایجاد خواهد شد که باید آن‌ها را کنترل و مدیریت کنیم. Codeigniter نیز از این قاعده مستثنا نیست اما این فریم‌ورک قابلیت‌هایی دارد که کنترل خطاها را بسیار آسان می‌کند.

در حین استفاده از اپلیکیشن‌های تحت وب با خطاهایی مواجه می‌شویم و اگر این خطاها را به درستی مدیریت نکنید، کاربران شما بسیار آزرده خواهند شد. همانطور که گفتیم در Codeigniter می‌توان با استفاده از مکانیسم بسیار آسانی این مهم را انجام داد.

مثلا هنگامی که فریم‌ورک در حالت توسعه قرار دارد، نسبت به زمانی که حالت تولید فعال شده، می‌توان خطاهای ایجاد شده را به‌خوبی شناسایی و نسبت به رفع آن‌ها اقدام کرد.

با کمی تغییر در کدهای فایل index.php، محیط اپلیکیشن شما می‌تواند تغییراتی داشته باشد. شما می‌توانید شیوه خطایابی را در سه حالت تعیین کنید: حالت توسعه، حالت تست و حالت تولید. بدین منظور باید خط زیر را در فایل یاد شده تغییر دهید.

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');  

هر حالت خطایابی نیاز به سطح متفاوتی از گزارش خطا دارد. به صورت پیش‌فرض حالت توسعه، خطاها را نمایش می‌دهد. اما حالت تست و تولید، خطاها را مخفی می‌کنند. فریم‌ورک Codeigniter سه تابع مختلف را برای مدیریت خطاها در اختیار ما قرار داده است که در زیر آن‌ها را توضیح داده‌ایم:

  • ()show_error : این تابه خطاها را در قالب HTML و در بالای نمایشگر، نشان خواهد داد.

قالب کلی

show_error($message, $status_code, $heading = 'An Error Was Encountered')

پارامترها

  • $message (mixed) − پیام خطا

  • $status_code (int) − کد پاسخ HTTP

  • $heading (string) − صفحه‌ی مدیریت خطا

نوع مقدار بازگشتی

چند حالته
  • ()show_404 : اگر سعی کنید به صفحه‌ای که وجود ندارد دسترسی داشته باشید، این تابع خطای مناسبی را نمایش خواهد داد.

قالب کلی

show_404($page = '', $log_error = TRUE)

پارامترها

  • $page (string) – رشته‌ی آدرس صفحه

  • $log_error (bool) – لاگ خطا

نوع مقدار بازگشتی

void (تهی)
  • ()log_message : این تابه برای نوشتن پیام‌های لاگ مورد استفاده قرار می‌گیرد. این متد زمانی کاربردی است که بخواهید خطاهای سفارشی خاص خودتان را در فایل لاگ بنویسید.

قالب کلی

log_message($level, $message, $php_error = FALSE)

پارامترها

  • $level (string) − سطح خطا: ‘error’, ‘debug’ با ‘info’

  • $message (string) − پبام برای نوشته شدن در لاگ

  • $php_error (bool) − لاگ پیشفرض پی اچ پی

نوع مقدار بازگشتی

void

گزارش‌گیری (Logging) را می‌توان با استفاده از فایل application/config/config.php فعال کرد. در کد زیر محتوای فایل confing.php را مشاهده می‌کنید که در آن می‌توان مقادیر مورد نظر را تعیین کرد.

/*  |--------------------------------------------------------------------------------  |   Error Logging Threshold  |--------------------------------------------------------------------------------  | You can enable error logging by setting a threshold over zero. The   | threshold determines what gets logged. Threshold options are:  |  |   0 = Disable logging, Error logging TURNED OFF  |   1 = Error Message (including PHP errors)  |   2 = Debug Message  |   3 = Informational Messages  |   4 = All Messages  |  | You can also pass an array with threshold levels to show individual error types  |  |   array(2) = Debug Message, without Error Messages  | For a live site you'll usually only enable Errors (1) to be logged otherwise   | your log files will fill up very fast.  |  */  $config['log_threshold'] = 0;

فایل‌های لاگ را می‌توانید در پوشه‌ی application/log مشاهده کنید. پیش از فعال کردن گزارش‌گیری اطمینان حاصل کنید که این پوشه قابل نوشتن باشد.

قالب‌های مختلف برای پیام‌های لاگ را می‌توانید در مسیر application/views/errors/cli یا application/views/errors/html مشاهده کنید.

با توجه به آنچه در این جلسه به شما توضیح دادیم، می‌توانید خطاهای مختلف ایجاد شده در حین توسعه‌ی اپلیکیشن‌های تحت‌وب با Codeigniter را به راحتی شناسایی و نسبت به رفع آن‌ها اقدام کنید.

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

اگر سوالی یا نظری در مورد مباحث مطرح شده در این جلسه دارید، لطفا از طریق بخش دیدگاه‌ها آن را با زومیت و سایر کاربران به اشتراک بگذارید.


 

این مقاله برگرفته شده از سایت زومیت می باشد و آرادپرداز مسئولیتی در قبال محتوی آن ندارد.