Bài 07: MVC PHP - Viết thư viện load helper

Tiếp tục serie MVC PHP thì trong bài này chúng ta tìm hiểu helper và cách viết thư viện load helper trong project MVC của chúng ta. Về cách làm thì vẫn không khác gì so với các bài load Libraryconfig nên có lẽ mình sẽ giải thích ít hơn nhé các bạn.

Trước khi vào bài học thì mình chụp hình cấu trúc folder cho bài này nhé.

/mvc-php-viet-thu-vien-load-helper-2.png

1. Helper là gì?

Helper là nơi lưu trữ các hàm và mỗi file helper thông thường sẽ chứa những hàm có cùng một chủ đề. Ví dụ khi ta tạo các hàm xử lý chuỗi thì ta sẽ tạo một file String_Helper.php để lưu trữ, khi tạo các hàm chuyên xử lý file thì ta tạo file File_Helper.php để lưu trữ.

Helper trong Project MVC này đặt ở đâu?

Tất cả các file helper sẽ được đặt trong folder system/helper và mục đích là cho tất cả các module đều có thể sử dụng nó.

Quy tắc đặt tên file helper

Để đặt tên file helper bạn phải tuân thủ các quy tắc sau:

  • Tên file helper phải viết in hoa chữ cái đầu và có hậu tố _Helper ở cuối. Ví dụ helper string thì tên file sẽ là  String_Helper.php
  • Trong helper bạn có thể chứa class hoặc function đều được. Nhưng theo nguyên tắc nếu là class thì bạn nên đặt nó trong library nhé.
  • helper chỉ là những function nên khi load helper hệ thống sẽ không tạo mới như library mà bạn muốn dùng hàm nào thì gọi tới hàm đó.

2. Tạo mới một file helper

Bây giờ ta thực hành tạo mới một file helper có tên là string thì bạn sẽ thực hiện các bước sau:

  • Tạo mới một file có tên là String_Helper.php nằm trong thư mục system/helper
  • Viết những hàm bạn muốn tạo trong helper đó. Giả sử mình viết hàm string_to_int() như sau:
    <?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!');
    
    // Chuyển đổi chữ thành số
    function string_to_int($str) {
        return sprintf("%u", crc32($str));
    }

Ok vậy là bạn đã tạo được một file helper có tên là string. Bây giờ ta tiến hành viết thư viện loader cho helper

3. Viết thư viện loader cho helper

Bạn mở file system/core/loader/FT_Helper_Loader.php lên và điền nội dung sau vào:

<?php
/**
 * @package		FT_Framework
 * @author		Freetuts Dev Team
 * @email       freetuts.net@gmail.com
 * @copyright	Copyright (c) 2015
 * @since		Version 1.0
 * @filesource  system/core/loader/FT_Helper_Loader.php
 */
class FT_Helper_Loader
{
    /**
	 * Load helper
     * 
	 * @param 	string
     * @desc    hàm load helper, tham số truyền vào là tên của helper
	 */
    public function load($helper)
    {
        $helper = ucfirst($helper) . '_Helper';
        require_once(PATH_SYSTEM . '/helper/' . $helper . '.php');
    }
}

Trong file này mình tạo mới một class tên là FT_Helper_Loader và trong nó có phương thức load(), phương thức này có tham số truyền vào là tên helper ở dạng chưa được chuyển đổi nên khi bạn load helper chỉ cần nhập vào tên là được. Ví dụ load helper string thì sẽ nhập tên là string chứ không phải String_Helper.

4. Khởi tạo thư viện load helper trong FT_Controller

Bước này khá quan trọng nhé các bạn. bạn vào file system/core/FT_Controller.php và thêm đoạn code load helper như sau ở hàm khởi tạo:

// Load Helper
require_once PATH_SYSTEM . '/core/loader/FT_Helper_Loader.php';
$this->helper = new FT_Helper_Loader();

Và đây là toàn bộ code cho hàm khởi tạo:

public function __construct() 
{
    // Loader cho config
    require_once PATH_SYSTEM . '/core/loader/FT_Config_Loader.php';
    $this->config   = new FT_Config_Loader();
    $this->config->load('config');

    // Loader Library
    require_once PATH_SYSTEM . '/core/loader/FT_Library_Loader.php';
    $this->library = new FT_Library_Loader();

    // Load Helper
    require_once PATH_SYSTEM . '/core/loader/FT_Helper_Loader.php';
    $this->helper = new FT_Helper_Loader();
}

5. Sử dụng helper tại controller ở module

Bây giờ ta sẽ thực hành sử dụng helper nhé.

Bạn tạo một controller mới tên là Helper_Controller.php, sau đó copy nội dung sau vào:

<?php if ( ! defined('PATH_SYSTEM')) die ('Bad requested!');

class Helper_Controller extends FT_Controller
{
    public function indexAction()
    {
        // Load heloer
        $this->helper->load('string');
        
        // Gọi đến hàm string_to_int
        echo string_to_int('freetuts.net');
    }
}

Bạn chạy với URL như sau: http://localhost/mvc/admin.php?c=helper và nếu kết quả như hình thì bạn đã thành công rồi đấy.

/mvc-php-viet-thu-vien-load-helper.png

6. Lời kết

Khi viết các bài về load thư viện này nếu bạn không rành về lập trình hướng đối tượng hoặc chưa tìm hiểu một số kiến thức về design pattern thì sẽ hơi khó khăn cho bạn đấy. Lời khuyên cho ban nếu rơi vào trường hợp đó thì hãy ráng học OOP trước khi tìm hiểu vào project này nhé, vì đây là serie dạng text chứ không phải video.

DOWNLOAD

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Facebook để được hỗ trợ nhanh nhất.