Tìm hiểu về Fuel PHP
Bài đăng này đã không được cập nhật trong 3 năm
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 cacheclasses
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ùngconfig
chứa những file config về db, router, các config của từng môi trường làm việclang
dùng cho chức năng multiple languagelogs
ghi log dự án & code mình thực hiệnmigrations
chứa những file migrate db trong trường hợp ta muốn thay đổi dbtask
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ậythemes
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àiviews
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
- Bạn nhớ phải có config
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
Nếu db bạn đặt collation là utf8 nhé
- 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