NTM Solutions

Facebook Youtube Google+

Thứ Hai, 26 tháng 11, 2018

Tự học CodeIgniter-Bài 06-Hàm Helper

#hoccodeigniter


Helpers, như cái tên gọi, chúng sẽ giúp bạn làm các tác vụ. Mỗi tập tin helper đơn giản là 01 bộ sưu tập các hàm trong 01 mục chuyên biệt.
Ta có các URL Helpers, dùng hỗ trợ trong việc tạo liên kết,
Ta có  các Form Helpers dùng hỗ trợ trong việc tạo các phần tử biểu mẫu ,
Ta có các Text Helpers dùng thao tác định dạng văn bản thông dụng ,
Ta có các Cookie Helpers dùng thiết lập và đọc các cookies,
Ta có các File Helpers dùng xử lý tập tin và …
Không giống như hầu hết các hệ thống khác trong CodeIgniter, Helpers không được viết theo kiểu Hướng Đối Tượng. Chúng đơn giản, là những hàm hướng thủ tục. Mỗi hàm helper thực thi 01 nhiệm vụ chuyên biệt, và độc lập với các hàm khác.
CodeIgniter không tải mặc định các hàm Helper, vì vậy bước đầu tiên trong việc dùng Helper là phải tải nó. Một khi đã tải rồi, nó có tính toàn cục trong controller và các views của bạn.
Helpers thường được lưu trong thư mục system/helpers, hoặc application/helpers. CodeIgniter sẽ tìm trong thư mục application/helpers trước. Nếu thư mục không tồn tại hoặc hàm helper cần tìm không có ở đó CI sẽ tìm trong thư mục system/helpers/

Tải Helper

Tải 01 tập tin helper hoàn toàn đơn giản bằng cách dùng phương thức sau:
$this->load->helper('tên_hàm');

Tên_hàm ở đây là tên tập tin chứa hàm helper mà không có phần đuôi .php cũng như chữ  “helper”.
Ví dụ, để tải tập tin URL Helper, có tên đầy đủ là url_helper.php, bạn dùng câu lệnh như sau:
$this->load->helper('url');

01 helper có thể được tải ở bất kỳ đâu bên trong các phương thức controller của bạn (hoặc ngay cả trong các tập tin View, dù cho như vậy là không cần thiết), bạn tải nó trước khi bạn dùng nó. Bạn có thể tải các helpers của bạn trong phần khởi tạo của controller vì thế cho nên chúng tự động được sẵn sàng để dùng trong bất kỳ hàm nào, hoặc bạn có thể tải 01 helper trong 01 hàm riêng biệt khi bạn cần xài nó.
Ghi chú:
Phương thức tải Helper đề cập ở trên không trả về giá trị nào, vì thế đừng gán nó vào biến nào. Chỉ cần dùng nó như vậy là được.
Tải nhiều Helpers

Nếu bạn cần tải nhiều hơn 01 helper bạn có thể xác định chúng trong 01 mảng như vầy:
$this->load->helper(array('helper1', 'helper2', 'helper3'));


Tự động tải Helpers

Nếu nhận thấy rằng bạn cần 01 helper nào đó có tính toàn cục trong cả ứng dụng, bạn có thể bảo CodeIgniter tự động tải nó trong suốt quá trình khởi tạo của hệ thống. Để làm điều này các bạn vào tập tin application/config/autoload.php và thêm helper mong muốn vào mảng $autoload['helper'] = array();
Cách dùng Helper

Một khi đã tải tập tin Helper có chứa hàm mà bạn định dùng, bạn sẽ gọi nó giống như 01 hàm thông dụng của PHP.
Ví dụ để tạo 01 liên kết bằng cách dùng hàm anchor() trong các tập tin view của bạn, ta viết như sau:
<?php echo anchor('blog/comments', 'Bấm vào đây');?>

Ngay chỗ “Bấm vào đây” chính là tên của liên kết, và “blog/comments” là URI trỏ đến controller/phương_thức bạn muốn liên kết đến.
“Mở rộng” Helpers

Để “mở rộng” Helpers, ta tạo 01 tập tin trong thư mục application/helpers/ với 01 cái tên trùng với 01 Helper đã có, nhưng có phần chữ MY_ đằng trước (phần chữ này có thể sửa lại được. Xem phần dưới)
Nếu tất cả điều bạn cần làm là thêm chức năng nào đó vào 01 helper đã có – có lẽ thêm 01 hàm hoặc 02, hoặc thay đổi cách hoạt động của 01 hàm helper nào đó – sau đó ta có thể thay thế cả helper đó bằng phiên bản mới tạo. Trong trường hợp này tốt nhất là dùng chữ “mở rộng” Helper.
Ghi chú:
Chữ “mở rộng” được dùng ở đây vì các hàm Helper có tính hướng thủ tục và rời rạc, không phải là chữ extends-thừa kế như trong ngôn ngữ lập trình truyền thống. Hàm ý ở đây là CI cho phép bạn khả năng thêm vào hoặc thay thế các hàm sẵn có do 01 Helper cung cấp.
Ví dụ để mở rộng Array Helper bạn sẽ tạo 01 tập tin có tên application/helpers/MY_array_helper.php, và thêm hoặc viết đè lên các hàm đã có sẵn:
// any_in_array() là hàm không có sẵn trong Array Helper, vì thế đó là 01 hàm mới

function any_in_array($needle, $haystack)

{

        $needle = is_array($needle) ? $needle : array($needle);



        foreach ($needle as $item)

        {
                if (in_array($item, $haystack))
                {
                        return TRUE;
                }
        }

        return FALSE;
}

// random_element() là hàm có sẵn trong Array Helper, vì thế ở đây là viết đè lên hàm cũ

function random_element($array)
{
        shuffle($array);
        return array_pop($array);
}

Thiết lập phần Prefix

Phần chữ thêm vào ở đầu (prefix) trong tên các helpers “mở rộng” được dùng tương tự để mở rộng thư viện và các lớp trong phần lõi của CI. Để thiết lập phần prefix, các bạn mở tập tin application/config/config.php và tìm giá trị này:
$config['subclass_prefix'] = 'MY_';

Các bạn làm ơn chú ý rằng tất cả các thư viện CodeIgniter bắt đầu bằng chữ CI_ vì thế đừng dùng chữ này cho phần prefix của bạn.
Danh mục các Helpers?

Các bạn có thể xem toàn bộ danh sách các hàm Helpers có sẵn của CodeIgniter tại đây:
user_guide/helpers/

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