CodeIgnitor: Helper

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Những phần trước các bạn đã làm quen với CI, chỉ với những phần trên bạn đã có thể viết ứng dụng web của mình bằng CI rôi. Ở phần này, tôi sẽ giới thiệu về các hàm (function) trợ giúp (gọi là helper) giúp cho công việc viết code của bạn trở nên đơn giản hơn rất nhiều.

Helper đó là cách gọi dành cho các function đã được CI (hoặc kể cả người dùng) định nghĩa sẵn để sử dụng trong ứng dụng của mình một cách nhanh chóng. CI đã cung cấp sẵn rất nhiều helper giúp bạn làm việc với CI nhanh chóng hơn nhiều. Một số helper được CI định nghĩa và theo tôi nó được sử dụng thường xuyên nhất đó là: url, form, language, captcha, email, ...

Load một Helper

Việc sử dụng một helper rất đơn giản, trước tiên bạn load helper cần sử dụng bằng cú pháp sau:

$this->load->helper('tên_helper');

Ví dụ bạn muốn load helper url trong controller blog, bạn sẽ có đoạn code như sau:

<?php
class Blog extends CI_Controller {
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->helper('url'); //Load helper url
       
        echo base_url(); //Sử dụng một hàm trong helper url
    }
}
?>

Như ví dụ trên, helper url được load bởi câu lệnh $this->load->helper('url'); và hàm base_url() trong helper url được sử dụng với lời gọi hàm bình thường mà chúng ta vẫn biết trong PHP.

Load nhiều Helper một lúc

Chúng ta cũng có thể load một lúc nhiều helper bằng cú pháp lệnh như sau:

$this->load->helper(
        array('helper1', 'helper2', 'helper3')
);

Ví dụ, bạn muốn load các helper url, form, language bạn sẽ có cú pháp như sau:

$this->load->helper(
        array('url', 'form', 'language')
);

Việc sử dụng các hàm được định nghĩa sẳn trong helper như tôi đã nói ở trên là chúng ta sẽ gọi hàm bình thường như trong PHP.

Tự động load Helper

Nếu trong trường hợp bạn cần sử dụng một helper nào đó một cách thường xuyên trong ứng dụng thì bạn có thể yêu cầu CodeIgniter tự động load helper đó mỗi khi khởi tạo hệ thống. Việc này được thực hiện bằng cách mở tập tin application/config/autoload.php và tìm đến dòng lệnh $autoload['helper'] = array(); rồi thêm helper vào. Ví dụ như nếu bạn muốn tự động load helper url form bạn làm như sau:

$autoload['helper'] = array('url', 'form');

Sử dụng Helper

Một khi bạn đã load xong Helper có chứa hàm mà bạn muốn dùng thì bạn có quyền sử dụng (gọi) hàm đó theo cách gọi hàm thông thường trong PHP.

Ví dụ như để tạo một link ta có thể sử dụng phương thức anchor() như sau:

<?php echo anchor('blog/comments', 'Click Here');?>

Trong đó "Click Here" là tên link  và "blog/comments" là URI tương ứng với controller/method mà bạn muốn link tới.

Thừa kế Helper

Ngoài những helper do CI định nghĩa sẵn (và được lưu trong thư mục system/helpers) thì chúng ta cũng có thể tự tạo ra các helper riêng bằng cách thừa kế từ những helper có sẵn đó.

Để thừa kế một Helper nào đó, trước tiên ta tạo một tập tin trong thư mục application/helpers/ với tên giống hệt với tên của Helper bạn muốn thừa kế nhưng phần tiền tố bạn thêm MY_.

Lưu ý
Thuật ngữ Thừa kế (Extend) được dùng với ý nghĩa không như theo các chương trình truyền thống như Java hay C# vì các hàm của mỗi Helper là các thủ tục và rời rạc và vì vậy không thể được thừa kế theo nghĩa truyền thống. Nhưng điều này giúp ta có thể thêm hoặc thay thế các hàm có sẵn của mỗi Helper.

Ví dụ, để thừa kế helper Array thì ta tạo một tập tin có tên và vị trí là application/helpers/MY_array_helper.php, rồi thêm hoặc ghi đề các hàm sau:

// any_in_array() không có sẵn trong helper Array, nên nó được định nghĩa như là một 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() đã có sẵn trong helper Array, nên nó được ghi đè như sau
function random_element($array)
{
        shuffle($array);
        return array_pop($array);
}

Thiết lập tiền tố

Để thiết lập tiền tố cho tên tập tin thừa kế helper thì ta mở tập tin application/config/config.php và tìm đến dòng lệnh sau:

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

Ở câu lệnh này bạn thấy tiền tố mặc định là 'MY_', bạn có quyền thay đổi lại tiền tố theo ý bạn, nhưng không được sử dụng tiền tố gốc thuộc các thư viện của CodeIgniter là CI_.

» Tiếp: Thư viện của CI
« Trước: Model
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!