CodeIgniter – Laravel so sánh và lựa chọn - Điện Lực Lệ Thuỷ

Chủ Nhật, 16 tháng 11, 2014

CodeIgniter – Laravel so sánh và lựa chọn

Những ngày tháng này phải chịu cảnh mạng Internet Việt Nam đứt cáp nên mọi công việc bị đình trệ, mình cũng không viết được nhiều bài. Nay cố gắng cho ra 1 bài cho đỡ buồn vậy. Chắc hắn ở Việt Nam 2 PHP framework CodeIgniter và Laravel đã rất phổ biến và đang được rất nhiều bạn lựa chọn để sử dụng. Bản thân mình cũng đã từng tìm hiểu và sử dụng cả 2 được một thời gian, nay mình xin tổng hợp lại ý kiến riêng cũng như của 1 vài cao thủ trên Internet để các bạn tham khảo và có thể chọn cho mình 1 framework phù hợp


Giới thiệu
Khi viết bài này, mình cũng đã suy nghĩ về vấn đề bảo thủ trong sự yêu thích, vì mình lúc trước cũng hay thích cái nào là cứ ôm khư khư nó thôi, cái mới – cái khác khó mà thuyết phục được, nhưng qua 1 thời gian mình phải thay đổi và thử tiếp cận cái mới, lạ thay mọi thứ đã thay đổi…Ở bài viết này mình chỉ đề cặp về CodeIgniter và Laravel, còn các PHP Framework khác như: Zend Framework, CakePHP, Symfony, Yii…thì mình không có tìm hiểu về nó nên sẽ không nhắc đến.

Và mình chỉ đưa ra 1 số so sánh cơ bản giữa 2 framework – đi vào so sánh chi tiết sẽ rất dài, nếu được mình sẽ viết tiếp 1 bài khác

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.

Mình đã bắt đầu nghiên cứu bằng CodeIgniter. Lúc đầu ngỡ ngàng, tất nhiên ai cũng bắt đầu từ con số 0 mà. Khi mình tìm hiểu thì tài liệu hay nhất để xem chính là trang Document chính chủ của CodeIgniter và các bài viết chia sẽ kinh nghiệm tìm trên Google.

Theo mình 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 1 tí, 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ó

Vote 1 phiếu đầu tiên cho mới hiểu là tìm hiểu CodeIgniter

So sánh giữa CodeIgniter – Laravel
Khi mình viết bài này mình đã xem qua một vài bài viết rất có chất lượng của các Lập trình viên trên Internet, hầu như là họ đưa ra so sánh giữa CodeIgniter và Laravel và kết luận cuối cùng là Laravel chiến thắng. Vì sao thì các bạn cùng theo dõi nhé, đầu tiên sẽ biểu đồ cho thấy mức độ yêu thích phổ biến và hiệu suất làm việc:


Làm việc với View

Cái dễ thấy nhất là 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, và tất nhiên sẽ mất thời gian hơn – nặng 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 chung) sẽ được sử dụng và kế thừa từ các file template con. CodeIgniter 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. Rất tiện

Với CodeIgniter các bạn phải viết hẳn code PHP vào các đoạn foreach hay in giá trị biến 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…Các bạn xem thêm về Blade Template cũng như hướng dẫn ở đây

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 thật chất ở điểm này Laravel lại thắng tiếp. Vì Laravel hỗ trợ nhiều cách viết để ngắn gọn nhất có thể và nhiều cách viết khác nhau như Fluent Query Builder và Eloquent . Thật sự mình đã thích Laravel ngay từ khi xem và viết vài dòng test với các dạng query này. 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

Các bạn có thể xem thêm ở trang Document về phần Database của Laravel

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

Các phần bổ trợ khác

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ản thân cơ bản của Laravel đã có các phần bổ trợ – Module cực hay như:

  • Unit Testing
  • Authentication
  • Caching
  • Hooks/ Filters
  • Helper
  • Pagination
  • ……

Còn rất rất nhiều các phần khác, các bạn hãy tìm hiểu thêm ở trang chủ và mình đảm bảo sẽ thích ngay

Tổng kết
Ở bài viết này, tuy nói là so sánh nhưng mình đã ưu ái hơn Laravel, vì sao thì mình đã trình bày các bạn có thể thấy. Mình không có ý chê bai hay dìm hàng CodeIgniter, vì bản thân mình đã sử dụng qua và cũng từng rất yêu thích nó

Mình biết hiện đang có nhiều công ty cũng như các nhóm vẫn đang làm việc và phát triển trên CodeIgniter. Mình không có ý kiến, nhưng cái chính ở bài này mình muốn đưa ra các cái hay (tuy là giới thiệu còn chưa đủ) cho mọi người tham khảo, từ đó có thể chọn ra cho mình 1 PHP FW phù hợp cho công việc, tất nhiên thì cái nào nhanh hơn – hay hơn – bảo mật hơn thì ta sẽ dùng

Ai mới tìm hiểu về PHP FW thì nên chọn CodeIgniter . Còn khi muốn thực hiện dự án nhanh hơn – chuyên nghiệp hơn thì theo mình Laravel là sự lựa chọn tuyệt vời !