- جمعه 22 تیر 1397 ساعت 00:30
- 3.1.9
- در حال تکمیل
- فعال
کدایگنایتر امکان این را به شما میدهد تا با استفاده از فانکشنهایی که در ادامه توضیح داده شده است، گزارش خطا (error reporting) را به اپلیکیشنهای خود اضافه کنید. علاوه بر این، کدایگنایتر یک کلاس گزارشدهی خطا (error logging) نیز دارد که امکان ذخیره پیامهای اشکالزدایی (debugging) و خطا در فایلهای متنی را فراهم میکند.
توجه
کدایگنایتر به صورت پیشفرض، کلیه خطاهای پیاچپی را نمایش میدهد. احتمالا در هنگامی که توسعه اپلیکیشن شما به پایان رسید، بخواهید این رفتار را تغییر دهید. در ابتدای فایل index.php، میتوانید فانکشن error_reporting()
را بیابید. در صورتی که خطایی وجود داشته باشد، غیرفعال کردن گزارشدهی خطا، منجر به جلوگیری از بازنویسی فایلهای گزارش (log files) نخواهد شد.
در کدایگنایتر برخلاف اغلب سیستمها، فانکشنها اینترفیسهاس رویهگرای سادهای هستند که به صورت گلوبال در کل اپلیکشن در دسترس هستند. این رویکرد، این امکان را به پیامهای خطا میدهد تا بدون نگرانی درباره محدوده دسترسی کلاس/فانکشن تولید شوند.
هرگاه بخشی از هسته اپلیکیشن، فانکشن exit()
را فراخوانی کند، کدایگنایتر یک کد وضعیت (Status code) نیز برمیگرداند. این کد وضعیت با کد وضعیت HTTP تفاوت دارد و در نقش یک اطلاعرسان، به بقیه پردازشهایی ارسال خواهد شد که ناظر بر اجرای اسکریپت هستند و بررسی میکنند که آیا اسکریپت با موفقیت اجرا شده است یا اگر با موفقیت اجرا نشده است، با چه نوع مشکلی مواجه شده است که باعث توقف آن شده است. این مقادیر در application/config/constants.php تعریف شدهاند. گرچه کدهای وضعیت خروج، بیشترین کاربرد را در تنظیمات CLI دارند، بازگرداندن کدهای مناسب به سرور کمک میکند تا اسکریپت و وضعیت سلامت اپلیکیشنتان را تحت نظر داشته باشد.
فانکشنهای زیر به شما کمک میکند تا خطاهای مورد نظرتان را تولید کنید:
show_error($message, $status_code, $heading = 'An Error Was Encountered') |
|
پارامترها |
|
مقدار بازگشتی | ندارد |
این فانکشن پیام خطایی را نمایش میدهد که با استفاده از قالب خطا و متناسب با روش اجرای اسکریپت، تولید شده است:
application/views/errors/html/error_general.php
یا قالب زیر، اگر اسکریپت از طریق CLI اجرا شده باشد:
application/views/errors/cli/error_general.php
پارامتر اختیاری $status_code
تعیین میکند که کدام کد وضعیت HTTP باید همراه خطا ارسال شود. اگر $status_code
کمتر از 100 باشد، مقدار 500 برای کد وضعیت HTTP سِت میشود و مقدار $status_code + EXIT__AUTO_MIN
نیز برای کد وضعیت خروج سِت خواهد شد. اگر این مقدار بزرگتر از EXIT__AUTO_MAX
باشد یا اگر $status_code
مقدار 100 یا بیشتر داشته باشد، مقدار EXIT_ERROR
برای کد وضعیت خروج سِت خواهد شد. برای اطلاعات بیشتر application/config/constants.php را ببینید.
show_404($page = '', $log_error = TRUE) |
|
پارامترها |
|
مقدار بازگشتی | ندارد |
این فانکشن پیام خطا 404 را نمایش میدهد که با استفاده از قالب خطا و متناسب با روش اجرای اسکریپت، تولید شده است:
application/views/errors/html/error_404.php
یا قالب زیر، اگر اسکریپت از طریق CLI اجرا شده باشد:
application/views/errors/cli/error_404.php
این فانکشن انتظار دارد که پارامتری که به آن پاس داده میشود، مسیر فایل صفحهای باشد که یافت نشده است. کد وضعیت خروج به EXIT_UNKNOWN_FILE
سِت خواهد شد. توجه کنید که اگر کنترلر مورد نظر یافت نشود، کدایگنایتر به صورت خودکار، پیام 404 نمایش میدهد.
کدایگنایتر به صورت خودکار همه فراخوانیهای show_404()
را لاگ میکند. اگر مقدار اختیاری پارامتر دوم را FALSE
قرار دهید، کدایگنایتر از لاگ کردن آن فراخوانی چشمپوشی میکند.
log_message($level, $message) |
|
پارامترها |
|
مقدار بازگشتی | ندارد |
این فانکشن امکان این را به شما میدهد تا پبامهایی را در فایلهای لاگ خود بنویسید. برای پارامتر اول باید یکی از سه سطح لاگ (debug یا error یا info) را قرار دهید که نشاندهنده نوع پیام است و برای پارامتر دوم نیز خود پیام را باید قرار دهید.
مثال
if ($some_var == '')
{
log_message('error', 'Some variable did not contain a value.');
}
else
{
log_message('debug', 'Some variable was correctly set');
}
log_message('info', 'The purpose of some variable is to provide some value.');
سه نوع پیام وجود دارد:
- پیامهای خطا (Error Messages). این نوع پیامها، پیامهای خطا واقعی هستند، مانند خطاهای PHP و یا خطاهای کاربر.
- پیامهای دیباگ (Debug Messages). این نوع پیامها به دیباگ برنامه کمک میکنند. برای مثال اگر یک کلاس لود شد، میتوانید لود شدن آن را به عنوان پیام دیباگ ثبت کنید تا در هنگام بررسی لاگها راحتتر متوجه شوید که این کلاس لود شده یا نه.
- پیامهای اطلاعاتی (Informational Messages). این پیامها کمترین اولویت را دارند و صرفا اطلاعاتی درباره برخی پردازشها ارائه میدهند.
توجه
برای اینکه فایلهای لاگ در عمل نیز نوشته شوند، باید دایرکتوری logs/ قابل نوشتن باشد. علاوه بر این، باید با مقداردهی $config['log_threshold']
که در application/config/config.php قرار دارد، آستانه لاگ کردن را مشخص کنید. برای مثال ممکن است فقط مقدار خطاها را بخواهید لاگ کنید و نه دو نوع دیگر را. اگر مقدار این متغییر را 0 قرار دهید، هیچ لاگی ثبت نخواهد شد.
سایر پستهای داکیومنت
- به کدایگنایتر خوش آمدید
- نصب
- بررسی اجمالی
- شروع به استفاده از کدایگنایتر
- کدایگنایتر در یک نگاه
- فیچرهای کدایگنایتر
- فلوچارت اپلیکیشن
- مدل ویو کنترلر
- اهداف طراحی و معماری
- خودآموز
- مشارکت در کدایگنایتر
- نوشتن مستندات کدایگنایتر در صف ترجمه
- گواهی مبدأ توسعه دهنده 1.1 در صف ترجمه
- مباحث کلی
- URLها در کدایگنایتر
- کنترلرها
- نامهای رزرو شده
- ویوها
- مدلها
- هلپرفانکشنها
- استفاده از لایبرریهای کدایگنایتر
- ساخت لایبرری
- استفاده از درایورهای کدایگنایتر
- ساخت درایور
- ساخت کلاسهای هسته سیستم
- ساخت کلاسهای کمکی
- هوکها - توسعه هسته فریمورک
- بارگذاری خودکار ریسورسها
- فانکشنهای عمومی
- فانکشنهای سازگاری
- مسیریابی URI
- هندل کردن خطاها
- کش کردن صفحات وب
- ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن
- اجرای کدایگنایتر به وسیله خط فرمان
- مدیریت چندین اپلیکیشن
- هندل کردن محیطهای چندگانه
- سینتکس جایگزین PHP برای فایلهای ویو
- Security در صف ترجمه
- راهنمای کدنویسی در PHP
- لایبرریها در صف ترجمه
- کلاس بنچمارک
- درایور کش در صف ترجمه
- Calendaring Class در صف ترجمه
- Shopping Cart Class در صف ترجمه
- Config Class در صف ترجمه
- Email Class در صف ترجمه
- Encrypt Class در صف ترجمه
- Encryption Library در صف ترجمه
- File Uploading Class در صف ترجمه
- Form Validation در صف ترجمه
- FTP Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Javascript Class در صف ترجمه
- کلاس زبان
- Loader Class در صف ترجمه
- کلاس مایگریشن
- Output Class در صف ترجمه
- Pagination Class در صف ترجمه
- Template Parser Class در صف ترجمه
- Security Class در صف ترجمه
- Session Library در صف ترجمه
- HTML Table Class در صف ترجمه
- Trackback Class در صف ترجمه
- کلاس تایپوگرافی در صف ترجمه
- Unit Testing Class در صف ترجمه
- URI Class در صف ترجمه
- User Agent Class در صف ترجمه
- XML-RPC and XML-RPC Server Classes در صف ترجمه
- کلاس انکود کردن آرشیو Zip در صف ترجمه
- رفرنس دیتابیس در صف ترجمه
- شروع سریع دیتابیس: کد نمونه
- پیکربندی دیتابیس در صف ترجمه
- Connecting to your Database در صف ترجمه
- Queries در صف ترجمه
- Generating Query Results در صف ترجمه
- Query Helper Methods در صف ترجمه
- Query Builder Class در صف ترجمه
- Transactions در صف ترجمه
- Database Metadata در صف ترجمه
- فراخوانی سفارشی فانکشن
- Database Caching Class در صف ترجمه
- Database Forge Class در صف ترجمه
- Database Utility Class در صف ترجمه
- DB Driver Reference در صف ترجمه
- هلپرفانکشنها
- هلپرفانکشن Array
- هلپرفانکشن CAPTCHA در صف ترجمه
- هلپرفانکشن Cookie
- Date Helper در صف ترجمه
- هلپرفانکشن Directory
- Download Helper در صف ترجمه
- Email Helper در صف ترجمه
- File Helper در صف ترجمه
- هلپرفانکشن Form در صف ترجمه
- HTML Helper در صف ترجمه
- Inflector Helper در صف ترجمه
- هلپرفانکشن Language
- هلپرفانکشن Number
- Path Helper در صف ترجمه
- Security Helper در صف ترجمه
- Smiley Helper در صف ترجمه
- هلپرفانکشن String
- Text Helper در صف ترجمه
- Typography Helper در صف ترجمه
- URL Helper در صف ترجمه
- XML Helper در صف ترجمه