Tìm hiểu về Fuel PHP

Dự án mình đang join sử dụng FuelPHP Framework nên mình cũng có đôi chút chia sẻ về framework này.

1. Lịch sử ra đời

Framework này được bắt đầu vào cuối năm 2010 bởi Dan Horrigan cùng với Phil Sturgeon, Jelmer Schreuder, Harro Verton and Frank de Jonge. Vào cuối tháng 8/2011 thì bản 1.0 đã được public. 1 điều mình thích ở thằng này đó là nó đơn giản, linh hoạt và hoạt động trên PHP 5.3. Bộ core chỉ nặng ~ 6MB mà thôi. Ta có thể vào thằng bên trong để debug, xem luồng xử lí code nó ra sao (nhưng càng đọc nhiều thì mình thấy thằng này khá tù tội)

2. Cài đặt

Trên github của fuel thì có bản 1.8/master là bản stable. Nhưng dự án mình dùng bản mới nhất là 1.9/develop nên code của mình sẽ chạy trên version này nhé Lấy code về thôi composer create-project fuel/fuel:dev-1.9/develop --prefer-source ten-folder-project Chúng ta sẽ có cấu trúc thư mục như sau

/
  docs/
  fuel/
    app/
    core/
    packages/
  public/
    .htaccess
    assets/
    index.php
  oil

Bạn nhớ phải chạy command oil refine install để cấp quyền ghi cho những folder cần thiết

Sau khi cấu hình virtual host & access vào dự án. Ta sẽ có được kết quả sau

3. Cấu trúc dự án

Ta chỉ cần quan tâm folder fuel. Trong đó ta sẽ làm việc chủ yếu trong fuel/app

  • cache chứa cache của phần view & dữ liệu mà ta set lưu vào cache
  • classes trong này có controller xử lí logic. model để tương tác với db & khai báo quan hệ giữa các bảng. presenter có thể hiểu nôm na là 1 middleware như bên Laravel, nhưng không nhiều tính năng nên mình rất ít dùng
  • config chứa những file config về db, router, các config của từng môi trường làm việc
  • lang dùng cho chức năng multiple language
  • logs ghi log dự án & code mình thực hiện
  • migrations chứa những file migrate db trong trường hợp ta muốn thay đổi db
  • task ta có thể định nghĩa những đoạn code để có thể chạy thông qua command. Nó giống như command bên Laravel vậy
  • themes mình thường để những file css, js của dự án sau đó dùng webpack để move nó ra folder public bên ngoài
  • views chứa những file view để hiển thị ra ngoài màn hình

4. Practice thử xem sao

Mình sẽ làm 1 demo nhỏ: "Lấy dữ liệu từ db & hiển thị ra ngoài màn hình kết quả"

4.1 Khai báo router & controller

Ta vào file app/config/routes.php & khai báo 1 url

'demo' => ['welcome/demo', 'name' => 'welcome.hello']

demo là url mà ta sẽ truy cập 'welcome/demo', là chỉ đến Controller Welcome & action xử lí là demo 'name' => 'welcome.hello' là alias của route này

Bạn vào file config/development/db.php để chỉnh config đến db nhé

Lưu ý : development chính là môi trường phát triển của bạn. Nếu bạn để là production thì config của bạn phải ở trong folder production

Sau đó ta vào file app/classes/controller/welcome.php để xử lí logic:

public function action_demo()
    {
        $users = DB::select('*')->from('users')->execute()->as_array();
        foreach ($users as $user) {
            echo $user['username'] . '<br>';
        }
    }

Giờ bạn truy cập theo url DOMAIN/demo & kết quả sẽ là list những user trong db của bạn

5. Lưu ý khi connect db

  1. Bạn nhớ phải có config
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

Nếu db bạn đặt collation là utf8 nhé

  1. Dự án mình bị 1 bug đó là dù dữ liệu trong db là kiểu (int) những dữ liệu lấy ra thì lại bị chuyển hết về string & đây là cách mình khắc phục -, Bạn phải cài gói Mysqlnd tương ứng với version PHP của bạn
return array(
    'default' => [
        // this config will allow us get exactly data type of column through PDO
        'attrs' => [
            PDO::ATTR_EMULATE_PREPARES => false
        ]
    ]
);

Bạn phải set config này trong file app/config/db.php

Chúc bạn thành công

All Rights Reserved