Hiện nay, có rất nhiều PHP Framework trong thiết kế web, trong đó có 2 PHP framework CodeIgniter và Laravel được đánh giá là tốt, phổ biến nhất, sẽ là nguồn tài liệu thiết kế web hữu ích cho bạn. Bài viết dưới đây sẽ đưa ra 1 số so sánh cơ bản giữa 2 framework này.
Người mới bắt đầu nên lựa chọn PHP Framework nào?
Nói là người mới bắt đầu nhưng ở đây, một khi các bạn đã muốn tiếp cận với PHP framework thì trước tiên các bạn phải sử dụng thành thạo – viết PHP Application đơn giản theo cách viết thuần và nâng cao hơn là OOP. Tiếp đến các bạn có thể tìm hiểu thêm về MVC. Khi đã đạt các yêu cầu trên thì việc tìm hiểu 1 PHP Framework (FW) nào đó sẽ dễ dàng hơn.
CodeIgniter sẽ rất phù hợp cho các bạn mới bắt đầu tìm hiểu, dễ học – dễ xây dựng, cộng đồng cũng nhiều.
Laravel mới bắt đầu tìm hiểu có thể sẽ gây khó hiểu hơn CodeIgniter, vì nó có nhiều cái vắn tắt hơn, nhiều hàm nâng cao hơn…nhưng nếu xem kỹ và chịu khó nghiên cứu thì cũng không quá khó để tiếp thu nó và vì sự phổ biến của nó nên cộng đồng hỗ trợ của nó cũng sẽ tỉ lệ thuận với sự phổ biến đó nghĩa là cộng đồng hỗ trợ sẽ rất lớn mạnh.
So sánh giữa CodeIgniter – Laravel
Có rất nhiều ý kiến của các Lập trình viên trên Internet khi đưa CodeIgniter và Laravel ra so sánh nhưng kết luận cuối cùng là Laravel chiến thắng. Vì sao, các bạn cũng theo dõi nhé:
Làm việc với tầng View
CodeIgniter không hỗ trợ Template Engine. Nên việc viết code trong View rất xấu – tất nhiên là có thể tích hợp thêm 1 Template Engine khác bên ngoài vào nhưng sẽ mất thời gian hơn – nặng nề và khó khăn hơn.
Với Laravel, sử dụng Blade Template Engine. Rất nhẹ nhàng mà lại cực kỳ hữu dụng. Bạn chỉ cần có 1 trang master template (template sườn) sẽ được sử dụng và kế thừa từ các file template con. Còn CodeIgniter thì chưa làm được điều này.
Ví dụ các bạn có 1 trang index từ đầu đến cuối, chỉ có phần body là thay đổi – động theo yêu cầu – xử lý, các phần khác như header, footer, menu…sẽ giữ nguyên. Ở CodeIgniter thì cần phải include chúng lại. Laravel thì không cần. Ví dụ ở Laravel:
<!DOCTYPE HTML>
<html>
<head>
…
</head>
<body>
<div class=”header”>
…
</div>
@yield(‘content’)
</body>
</html>
Các bạn để ý phần @yield(‘content’). Khi sử dụng blade template thì các bạn không phải include gì cả, chỉ cần tạo thêm file ngắn gọn để hiển thị ở phần này, nó sẽ load động theo request, còn các thành phần các sẽ được thừa kế lại.
Với CodeIgniter các bạn phải viết hẳn code PHP vào các đoạn foreach hay lấy giá trị biến in ra, rất xấu và không hay cho người làm bên Front-end – có thể họ sẽ khó quản lý và phát triển thêm. Còn Laravel thì đơn giản hơn rất nhiều.
Làm việc với Database – Model
CodeIgniter hỗ trợ Active Record để có thể thực hiện câu query ngắn gọn hơn. Nhưng ở điểm này Laravel lại thắng vì Laravel hỗ trợ nhiều cách viết để ngắn gọn nhất có thể như Fluent Query Builder và Eloquent. Cực kỳ ngắn gọn – dễ quản lý và hữu dụng. Hỗ trợ sẵn các hàm để tìm dữ liệu – fetch dữ liệu – đếm dòng – CRUD. Còn CodeIgniter thì đã lâu vẫn giữ cách query như cũ – không thấy cập nhật lên nữa.
Đặc biệt hơn, với Laravel hỗ trợ tương tác với Database như tạo database, tạo bảng, chỉnh sửa bảng, insert dữ liệu…rất hay qua Schema Builder
Làm việc với Route
Khi làm việc với Route hoặc rewrite URL trong CodeIgniter, các bạn chỉ có thể quy định cho từng query riêng lẻ và phải hiểu thêm về Regex để có thể rewrite tối ưu.
Nhưng khi làm việc với Route trong Laravel, các bạn có thể Group các rule (quy định) lại với nhau, các rule con nằm trong rule mẹ sẽ chịu ảnh hưởng. Ví dụ
Route::group(array(‘before’=>’auth’),function(){
Route::get(‘admin/contacts’,’AdminController@contacts’);
Route::get(‘admin/deletessh’,’AdminController@deletessh’);
Route::post(‘admin/deletessh’,’AdminController@dodel’);
Route::get(‘admin/viewcontact/{id}’,’AdminController@viewcontact’);
}
Các bạn có thể thấy các rule con bên trong trước khi được thực thi sẽ phải chạy qua rule mẹ để kiểm tra, ok thì nó mới cho chạy, quá tuyệt và hay hơn hẳn so với CodeIgniter.
Ngoài ra, các phần bổ trợ khác của Laravel có nhiều hơn CodeIgniter – cộng đồng viết các phần bổ trợ – snippet cũng tăng nhanh lên chóng mặt so với CodeIgniter đang dậm chân tại chỗ.
Bài này giới thiệu sơ qua về 2 Framework và thiên về Laravel nhiều hơn không phải để bảo các bạn chọn Laravel hay CodeIgniter mà có thể cho các bạn thấy rõ 1 số ưu nhược điểm của từng Framework từ đó các bạn có thể chọn ra cho mình 1 PHP Framework phù hợp với công việc của mình và của thị trường các công ty phát triển phần mềm sử dụng Framework. Tất nhiên cái nào phổ biến hơn – nhanh hơn – hay hơn – bảo mật hơn – chuyên nghiệp hơn – hỗ trợ nhiều hơn thì mình sẽ dùng và nên dùng.
Chúc các bạn thành công!