NTM Solutions

Chủ Nhật, 9 tháng 12, 2018

Tự học CodeIgniter-Bài 17-Xử lý lỗi


#hoccodeigniter


CodeIgniter cho phép bạn xây dựng báo cáo lỗi trong ứng dụng của bạn bằng cách dùng các hàm được đề cập dưới đây. Hơn nữa, nó còn có 01 lớp dùng ghi nhật ký lỗi cho phép các thông điệp biên dịch và lỗi được lưu lại thành các tập tin.

Ghi chú:

Mặc định, CodeIgniter hiển thị tất cả lỗi PHP. Rất có thể bạn sẽ muốn thay đổi thuộc tính này 01 khi việc phát triển hoàn thành (vì lí do bảo mật chẳng hạn). Bạn sẽ tìm thấy hàm error_reporting() tại tập tin index.php trong thư mục gốc. Vô hiệu hóa tính năng báo cáo lỗi sẽ KHÔNG ngăn các tập tin nhật ký được ghi lại mỗi khi ứng dụng phát sinh lỗi.

Không giống như hầu hết các hệ thống trong CodeIgniter, các hàm xử lý lỗi đơn giản là các thể hiện dạng thủ tục đơn giản có phạm vi toàn cục trên toàn ứng dụng. Phạm vi này cho phép ta có thể đặt bẫy các thông điệp lỗi mà không cần quan tâm về phạm vi lớp/hàm.

CodeIgniter cũng trả về 01 mã trạng thái bất cứ lúc nào 01 phần trong lõi hệ thống gọi hàm  exit(). Mã trạng thái exit này khác với mã trạng thái HTTP, và nó phục vụ cho việc ghi chú cho các tiến trình khác đang chờ xem đoạn mã xử lý xong hoàn toàn chưa, nếu chưa , sẽ xuát hiện 01 dạng lỗi gây ra việc hủy tiến trình. Những giá trị này được xác định trong tập tin application/config/constants.php. Trong khi các mã trạng thái exit rất hữu dụng trong các thiết lập CLI, trả về các mã giúp đỡ phù hợp giúp phần mềm máy chủ lưu trữ dấu vết các đoạn mã của bạn và tình trạng sức khỏe phần mềm của bạn.


Các hàm sau cho phép bạn sinh ra lỗi:

show_error($message, $status_code, $heading = 'Phát sinh lỗi')

Tham sốs:
·         $message (hỗn hợp) – Thông điệp lỗi
·         $status_code (số nguyên) – mã trạng thái HTTP Response
·         $heading (chuỗi) – Tiêu đề trang báo lỗi
Kiểu trả về:
Thủ tục

Hàm này sẽ hiển thị thông điệp lỗi gắn nó vào 01 trang biểu mẫu báo lỗi khi bạn thi hành nó:

application/views/errors/html/error_general.php

hoặc:

application/views/errors/cli/error_general.php

Tham số tùy chọn $status_code quyết định mã trạng thái HTTP nào sẽ được gửi kèm với lỗi xảy ra. Nếu $status_code <100, mã trạng thái HTTP sẽ được thiết lập thành 500, và mã trạng thái exit sẽ được thiết lập thành $status_code + EXIT__AUTO_MIN. Nếu giá trị đó lớn hơn EXIT__AUTO_MAX, hoặc nếu $status_code là 100 hoặc lớn hơn, mã trạng thái exit sẽ được thiết lập thành EXIT_ERROR. Bạn có thể kiểm tra tại đây: application/config/constants.php để biết thêm chi tiết.

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

Tham số:
·         $page (chuỗi) – chuỗi liên kết URI
·         $log_error (bool) – Có ghi nhật ký lỗi hay không
Kiểu trả về:
Thủ tục

Hàm này sẽ hiển thị thông điệp lỗi 404 gắn vào 01 trang biểu mẫu lỗi khi bạn thi hành nó:

application/views/errors/html/error_404.php

hoặc:

application/views/errors/cli/error_404.php

Hàm nhận vào 01 chuỗi là đường dẫn đến tập tin của trang không tồn tại. Mã trạng thái exit sẽ được thiết lập thành EXIT_UNKNOWN_FILE. Hãy chú ý rằng CodeIgniter tự động hiển thị thông báo lỗi 404 nếu không tìm thấy controllers.

CodeIgniter tự động ghi vào nhật ký mỗi lần gọi hàm show_404() . Thiết lập tham số thứ 02 là FALSE sẽ bỏ qua thao tác ghi nhật ký.

log_message($level, $message)

Tham số:
·         $level (chuỗi) – Cấp độ nhật ký: ‘error’, ‘debug’ hoặc ‘info’
·         $message (chuỗi) – thông điệp lỗi ghi vào nhật ký
Kiểu trả về:
Thủ tục

Hàm này cho phép ta ghi các thông điệp vào các tập tin nhật ký. Bạn phải cung cấp 01 trong 03 “cấp độ” trong tham số đầu nhằm chỉ ra loại thông điệp (debug, error, info), kèm với thông điệp trong tham số thứ 02.

Ví dụ:

if ($some_var == '')

{

        log_message('error', 'Biến không chứa giá trị.');

}

else

{

        log_message('debug', 'Biến thiết lập không đúngvariable was correctly set');

}



log_message('info', 'Mục đích của biến là cung cấp giá trị.');

Có 03 loại thông điệp:

  1. Thông điệp Error-> là các lỗi thật sự, ví như lỗi PHP hoặc lỗi người dùng.
  2. Thông điệp Debug ->là những thông điệp gán vào trong qua trình biên dịch. Ví dụ, nếu 01 lớp khởi tạo, bạn cần ghi nhật ký lại như là thông tin biên dịch.
  3. Thông điệp Informational-> là các thông điệp cấp thấp nhất, đơn giản để cung cấp thông tin cần quan tâm về tiến trình nào đó.

Ghi chú:

Để tập tin nhật ký có thể ghi được, thư mục logs/ phải được thiết lập thuộc tính là có thể ghi được. Thêm nữa là bạn phải thiết lập giá trị sau đây lớn hơn 0

$config['log_threshold'] = 4;

ở trong tập tin application/config/config.php.

0->vô hiệu hóa ghi nhật ký

1->hiển thị thông điệp lỗi

2->hiển thị thông điệp debug

3->hiển thị thông điệp cung cấp thông tin

4->hiển thị tất cả thông điệp nếu có

Tập tin nhật ký này lưu trữ theo ngày và nằm ở thư mục application/logs

Nếu vẫn chưa rõ các bạn xem thêm video clip sau:




By #tiensim

Nguồn: User Guide – General Topics
Facebook Youtube Google+