NTM Solutions

Facebook Youtube Google+

Thứ Sáu, 30 tháng 11, 2018

Tự học CodeIgniter-Bài 10-Tạo các lớp lõi hệ thống


#hoccodeigniter


Mỗi lần CodeIgniter chạy, có nhiều lớp nền bên dưới tự động khởi tạo như là 01 phần của phần lõi framework. Tuy nhiên chúng ta hoàn toàn có thể hoán đổi bất kỳ các lớp lõi hệ thống bằng phiên bản riêng của người dùng hoặc thậm chí có thể làm một phiên bản “độ” của các lớp lõi.

Hầu hết người dùng sẽ không bao giờ có nhu cầu “độ” lại , nhưng tùy chọn thay thế hoặc mở rộng chúng vẫn tồn tại cho những ai muốn tạo dấu ấn quan trọng lên phần lõi CodeIgniter.

Ghi chú:

Dính vào 01 lớp lõi hệ thống có nhiều thứ liên quan nhau, vì thế hãy chắc chắn bạn hiểu rõ những gì mình làm trước khi thực hiện.


Danh sách lớp hệ thống

Sau đâylà danh sách các tập tin lõi hệ thống được gọi mỗi khi CodeIgniter chạy:

1.       Benchmark

2.       Config

3.       Controller

4.       Exceptions

5.       Hooks

6.       Input

7.       Language

8.       Loader

9.       Log

10.    Output

11.    Router

12.    Security

13.    URI

14.    Utf8

Thay thế các lớp lõi

Để dùng được 01 lớp hệ thống do chính bạn tạo thay vì 01 lớp mặc định đơn giản đặt phiên bản của bạn tại thư mục application/core/

application/core/ten_lop.php

Nếu thư mục này chưa có thì ta có thể tạo mới nó.

Bất kỳ tập tin nào có tên trùng với 01 trong những tập tin nằm trong danh sách trên sẽ được dùng thay thế cho tập tin mặc định.

Hãy chú ý rằng lớp của bạn phải có phần bắt đầu là chữ CI. Ví dụ, nếu tập tin của bạn có tên là Input.php ->tên lớp sẽ đặt như sau:

class CI_Input {



}

Mở rộng lớp lõi

Nếu tất cả những gì bạn cần là thêm mới tính năng vào 01 thư viện có sẵn – có lẽ thêm 01 phương thức hoặc 02 – hay thay thế toàn bộ thư viện bằng phiên bản của bạn. Trong đa phần các trường hợp bạn thường chỉ mở rộng lớp. Mở rộng 01 lớp gần tương tự như việc thay thế 01 lớp với vài ngoại lệ:

·         Phần tên lớp phải khai báo thừa kế lớp thư viện cha.

·         Tên lớp mới và tên tập tin phải bắt đầu bằng chữ MY_ (phần này có thể cấu hình lại được. Xem phần dưới sẽ rõ).

Ví dụ để mở rộng lớp gốc Input bạn sẽ tạo 01 tập tin có tên là application/core/MY_Input.php, và khai báo lớp mới như sau:

class MY_Input extends CI_Input {



}

Ghi chú:

Nếu bạn cần dùng 01 hàm khởi tạo trong lớp của bạn hãy chắc chắn rằng có sự thừa kế từ hàm khởi tạo của lớp cha:

class MY_Input extends CI_Input {



        public function __construct()

        {

                parent::__construct();

                // Các mã khởi tạo của bạn

        }

}

Mẹo: bất kỳ các hàm nào trong lớp của bạn được đặt tên trùng với các hàm trong lớp cha sẽ được dùng thay vì phiên bản gốc(cái này gọi là “chồng hàm” ). Điều này cho phép bạn bổ sung vào phần lõi CodeIgniter.

Nếu bạn khai báo thừa kế lớp Controller lõi, sau đó chắc chắn mở rộng lớp mới của bạn trong phần khởi tạo của controller.

class Welcome extends MY_Controller {



        public function index()

        {

                $this->load->view('welcome_message');

        }

}

Sửa phần Prefix

Để thiết lập phần prefix của lớp con, hãy mở tập tin application/config/config.php và tìm mục này:

$config['subclass_prefix'] = 'MY_';

Các bạn chú ý rằng tất cả thư viện gốc của CodeIgniter bắt đầu bằng chữ CI_ vì thế cho nên KHÔNG dùng trùng chữ này cho phần prefix của bạn.

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