Laravel | CakePHP comparison

Laravel | CakePHP comparison

Giới thiệu về Laravel

  1. Laravel là 1 framework PHP mã nguồn mở được phát triển và duy trì bởi Taylor Otwell. Các mẫu kiến trúc của nó chủ yếu được dựa trên khung Symfony.
  2. Tuy Laravel ra đời khá muộn (năm 2011) so với các framework lớn khác của PHP như Symfony (năm 2010), CakePHP (năm 2005). Nhưng tới thời điểm hiện tại, Laravel đang là framewok dẫn đầu về số lượng người sử dụng, số sao trên Github và cũng như số lượng tìm kiếm trên Google hay StackOverflow  trong các framework của PHP.

Số lượng sao trên Github

  1. Laravel

  2. CakePHP

  3. Và theo thống kê của Packagist thì Laravel có gần 13 triệu lượt cài đặt.

  4. Hiện tại phiên bản mới nhất của Laravel là phiên bản 6.4 (phát hành vào 24/10/2019). 
  5. Ngoài ra Laravel còn nhiều ưu điểm khác nữa để ta chọn làm framework cho việc phát triển web.

Ưu điểm nổi bật của Laravel

  1. Cú pháp dễ hiểu, dễ dàng tìm hiểu và sử dụng. 
  2. Tài liệu phong phú, đa dạng.
  3. Được xây dựng theo mô hình MVC.
  4. Chức năng có sẵn phong phú: Laravel cung cấp nhiều tính năng có sẵn giúp cho quá trình phát triển ứng dụng web trở nên nhanh chóng hơn. Như chỉ với một dòng lệnh php artisan make:auth bạn đã có được các tính năng như đăng ký, đăng nhập, đăng xuất, quên mật khẩu bằng không cần có thêm dòng code nào.
  5. Quản lý cấu hình: Với Laravel bạn có thể dễ dàng quản lý cấu hình và chạy dự án trong các môi trường khác nhau chỉ với 1 dòng lệnh để chuyển đổi giữa các môi trường.
    php artisan env - -env=testing
  6. Artisan: công cụ quản lý bằng dòng lệnh của Laravel. Thông qua công cụ này ta có thể dễ dàng tạo các Table, Model, … Công cụ quản lý của Laravel hiển thị thông tin chi tiết hơn CakePHP. Ví dụ hiển thị thông tin các routes trong dự án.
    Laravel hiển thị thông tin đầy đủ hơn: tên, phương thức, URI, middleware và action.

    CakePHP chỉ hiển thị các thông tin
  7. Quản lý route trong Laravel được chia thành từng file riêng biệt như api, web. Do đó dễ dàng quản lý hơn nhất là với các dự án lớn. Trong các CakePHP mặc định là lưu trong 1 file routes.php.
  8. Kiểm thử:
    Laravel đã tích hợp sẵn PHPUnit testing. Sau khi cài đặt tạo mới 1 ứng dụng Web Laravel thì chúng ta chỉ việc chạy phpunit. Khi chạy tests với phpunit, Laravel sẽ tự động set cấu hình môi trường đến testing. Ngoài ra Laravel cũng sẽ tự động cấu hình session và cache thành array trong khi testing. Nghĩa là không có dữ liệu session hoặc cache đã tồn tại khi trong quá trình test. Ngoài ra chúng ta có thể tạo file .env.testing trong project. File này sẽ ghi đè file .env khi chạy PHPUnit hoặc chạy lệnh Artisan với option là --env=testing.
    Trong thư mục tests có chia thành 2 thư mục nhỏ là Feature và Unit tương ứng với việc test chức năng hay unit test. Để tạo 1 test case mới, chúng ta sử dụng lệnh
    – Tạo test ở thư muc Feature
    php artisan make:test UserTest
    – Tạo test ở thư mục Unit
    php artisan make:test UserTest --unit

    Với CakePHP, chúng ta sẽ phải tự cài đặt với lệnh sau
    php composer.phar require --dev phpunit/phpunit:"^5.7|^6.0"
    và để chạy test thì dùng lệnh
    vendor/bin/phpunit
  9. Blade template: Như Symfony có Twig template, Laravel có sẵn 1 template engine là Blade template. Với Blade template, người dùng không cần phải dùng tới code PHP nữa. Như vậy code sẽ đẹp, tránh rối mắt.
    Blade Template

    CakePHP view template

    Ngoài ra Laravel cũng cung cấp sẵn các đoạn code hỗ trợ việc xác thực user đã đăng đăng nhập hay chưa cũng như quyền hạn của user. Do đó chúng ta không cần phải truyền thông tin liên quan (quyền hạn user, trạng thái đăng nhập…) đến view như trong CakePHP.

  10. File system (upload file): Có thể dễ dàng làm việc với File cho dùng bạn lưu trữ file đó ở local, Amazon S3, FPT hay Rackspace Cloud Storage chỉ với vài bước cấu hình đơn giản. Laravel sử dụng thư viện Flysystem và hỗ trợ cho phép sử dụng local filesystems, Amazon S3, FPT, Rackspace Cloud Storage. Khi dùng amazon s3 và Rackspace Cloud Storage thì ta chỉ cần cài đặt gói cần thiết với Composer sau đó thêm và chỉnh các thông tin trong file enviroment và config/filesystem.php mà không cần code thêm dòng nào cả. Tiết kiệm được khá nhiều thời gian so với CakePHP.

  11. Eloquent ORM: lấy dữ liệu thông qua Model với cú pháp code đẹp mắt. Tuy nhiên đổi lại là nó có vẻ chậm hơn Query Builder khi lấy dữ liệu phức tạp.
  12. So với CakePHP, Laravel đã tích hợp sẵn việc hỗ trợ sử dụng Vuejs trong dự án. Mặc định Laravel sử dụng NPM để cài đặt các package cho phía frontend.
  13. Hỗ trợ nhiều thư viện chính chủ: cashier (dịch vụ thanh toán), envoy, passport (xác thực cho API), scout (full text search), socialite (xác thực với Facebook, Twitter, LinkedIn, Google, GitHub và Bitbucket).
  14. API: Laravel trả về response nhanh hơn so với CakePHP. Ví dụ khi test thử một API lấy danh sách sản phẩm thì trong cả 5 lần test, Laravel vẫn có thời gian chạy ngắn hơn.
    Cakephp Laravel
    1 245 153
    2 318 189
    3 533 172
    4 396 179
    5 390 192
          Average 376,4 177
  15. Validations: Code validation trong Laravel dễ đọc, phân biệt rõ ràng phần code khai báo rule và custom message. Phần validation trong Cakephp được viết trong file Model tương ứng của từng table. Nhưng trong Laravel thì validation sẽ viết trong 1 file riêng biệt.
  16. Migrations: code migrate trong Laravel ngắn gọn hơn so với CakePHP.

    Tốc độ chạy migrate của Laravel cũng chạy nhanh hơn so với CakePHP.
    Laravel

    CakePHP