Khái niệm chung.
Framework là một bộ mã nguồn được xây dựng, phát triển và đóng gói – phân phối bởi các chuyên gia lập trình hoặc bởi các công ty lập trình. Nó sẽ cung cấp một cấu trúc phát triển chuẩn để các developer dựa vào đó xây dựng và phát triển các dự án. Đi kèm theo nó là một kho thư viện gồm nhiều lớp/hàm xử lý được đặt trong các packages hoặc namespace riêng. Các chuyên gia lập trình sử dụng nhiều kỹ thuật lập trình và giải thuật/thuật toán để xây dựng các lớp xử lý một cách tối ưu nhất, giải quyết các bài toán lập trình nhanh chóng và chính xác. Các lớp trong một framework sẽ làm việc tốt nhất với cấu trúc chuẩn mà framework đó cung cấp.
PHP là một ngôn ngữ script khá mạnh mẽ dùng để xây dựng website, phần mềm cloud, hay dùng để lập trình server và hiện nay nó cũng đang có rất nhiều framework tốt như: zend framework, symfony, yii framework, codeigniter, laravel… được rất nhiều developer ưa thích và sử dụng. Các PHP Framework đều được xây dựng theo chuẩn mô hình MVC (Model – View – Controller) và cung cấp rất nhiều lớp hỗ trợ xử lý về bảo mật, phân quyền, captcha, view helper, module manager, database, service… khi đó các lập trình viên sẽ xây dựng, phát triển website một cách dễ dàng và nhanh chóng.
>>>Xem thêm: Khóa học lập trình PHP
PHP framework làm cho sự phát triển của những ứng dụng web viết bằng ngôn ngữ PHP trở nên trôi chảy hơn, bằng cách cung cấp 1 cấu trúc cơ bản để xây dựng những ứng dụng đó. Hay nói cách khác, PHP framework giúp đỡ các bạn thúc đẩy nhanh chóng quá trình phát triển ứng dụng, giúp bạn tiết kiệm được thời gian, tăng sự ổn định cho ứng dụng, và giảm thiểu số lần phải viết lại mã cho lập trình viên. Ngoài ra Framework còn giúp những người mới bắt đầu có thể xây dựng các ứng dụng ổn định hơn nhờ việc tương tác chính xác giữa các Database, mã (PHP) và giao diện (HTML) một cách riêng biệt. Điều này cho phép bạn dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phí thời gian để viết các đoạn mã lặp lại trong một project.
Ý tưởng chung đằng sau cách thức làm việc của một PHP framework được kể đến là Model View Controller (MVC). MVC là 1 mô hình (kiến trúc) trong lập trình, cho phép tách biệt các mã nghiệp vụ (business logic) và giao diện (UI) thành các phần riêng biệt, điều này đồng nghĩa với việc ta có thể chỉnh sửa chúng 1 cách riêng lẻ. Trong cụm từ MVC thì: Model (M) có thể hiểu là phần xử lý các thao tác về nghiệp vụ (business logic), View được hiểu là phần xử lý lớp giao diện (presentation layer), và Controller làm nhiệm vụ lọc các request đc gọi từ user, có chức năng như 1 route: điều chỉnh, phân luồng các yêu cầu để gọi đúng Model & View thích hợp. Về cơ bản, MVC chia nhỏ quá trình xử lý của 1 ứng dụng, vì thế nên bạn có thể làm việc trên từng thành phần riêng lẻ, trong khi những thành phần khác sẽ không bị ảnh hưởng tới. Thực chất, điều này giúp đỡ bạn lập trình PHP nhanh hơn và ít phức tạp hơn.
1- Laravel FrameWok
Biểu đồ này thể hiện những project được tạo mới trong năm 2015.
Laravel ra mắt vào cuối tháng 04-2011 nhưng đã gây được sự chú ý lớn đối với cộng đồng PHP framework. Laravel được tạo ra bởi Taylor Otwell. Nó là 1 framework khá mới mẻ nhưng bù lại nó có “hướng dẫn sử dụng” ( Document ) khá đầy đủ, rõ ràng và dễ hiểu và nhiều ưu điểm hấp dẫn. Nếu bạn đã từng làm việc với các framework khác hoặc chỉ là người mới bắt đầu tìm hiểu php framework thì việc tiếp cận laravel framework không phải là vấn đề khó khăn gì. Laravel Framework vẫn sử dụng cấu trúc MVC và trên nền tảng lập trình hướng đối tượng OOP đồng thời kế thừa được sức mạnh của các đàn anh và đem đến những tính năng mới của PHP 5.3 trở lên.
Nhưng cũng chính vì ra đời muộn màng như thế đã buộc nó phải học hỏi cái hay từ các PHP Framework đàn anh đi trước, khắc phục những thiếu xót của các framework khác như symfony (laravel dùng thư viện của symfony) và đặc biệt là CI. Không những học hỏi từ các PHP Framework, nó còn học cái hay từ Ruby on Rails, ASP.NET MVC, và Sinatra.
Chính vì nó ra đời sau, khắc phục được những thiếu xót của các framework đàn anh, nên nó đang nắm giữ vị trí số một về độ phổ biến hiện nay.
Chúng ta hãy điểm qua một số tính năng mạnh mẽ của Laravel :
- Route trong Laravel thật sự khác biệt, mới mẻ và đầy mạnh mẽ. Mọi url đều có thể quản lý trong file route.
- Master layout được tích hợp sẵn cùng Blade template giúp code của chúng ta trên nên gọn gàng và tiện dụng. Các file layout có thể dẽ dàng extend của nhau giúp code ngắn gọn, dễ quản lý.
- Migration quản lý database thật dễ dàng khi làm việc đội nhóm.
- Eloquent class đầy mạnh mẽ nổi bật khi xử lý cơ sở dữ liệu quan hệ 1 – N và N – N, tối ưu tất cả các câu truy vấn.
- Composer quản lý và tích hợp các thư viện khác thật hay và không lo lắng khi thư viện đó bị thay đổi, laravel có đầy đủ các thư viện cơ bản đủ để thực hiện mọi yêu cầu của chúng ta.
- Document dễ đọc, dễ hiểu và có đầy đủ các ví dụ. Tuy ra đời muộn hơn các framework khác nhưng laravel lại có hướng dẫn chi tiết và đầy đủ ví dụ ngay tại trang chủ, các ví vụ để đọc đễ hiểu, cộng đồng phát triển rộng lớn và luôn luôn được update kịp thời
- Eloquent ORM: đây là một ORM tuyệt vời với khả năng migration data và làm việc tốt với MySQL, Postgres, SQL Server và SQLite, MongoDB. Các câu truy vấn database dễ hiểu, nhanh chóng.
- Package-libery phong phú, đa dạng, đáp ứng được hầu hết các nhu cầu cơ bản của chúng ta.
- User authentication được tích hợp sẵn, lập trình viên chỉ cần gọi class là có thể sử dụng theo ý muốn.
Và còn nhiều những chức năng khác…
2- CodeIgniter
CodeIgniter là một nền tảng ứng dụng web nguồn mở được viết bằng ngôn ngữ PHP bởi Rick Ellis (CEO của EllisLab, Inc). Phiên bản đầu tiên được phát hành ngày 28.02.2006, phiên bản hiện tại: 3.1.4 (phát hành ngày 2017.03.20). Ý tưởng xây dựng CodeIgniter được dựa trên Ruby on Rails, một nền tảng ứng dụng web được viết bằng ngôn ngữ Ruby. Hiện tại, CodeIgniter đang được phát triển bởi ExpressionEngine Development Team thuộc EllisLab, Inc.
Những điểm nổi bật
- Được thiết kế theo mô hình Model-View-Controller: Mô hình MVC giúp tách thành phần hiển thị giao diện (presentation) và xử lý (business logic) của một phần mềm thành những thành phần độc lập, từ đó giúp cho việc thiết kế, xử lý và bảo trì mã nguồn dễ dàng, đồng thời tăng khả năng mở rộng của phần mềm. CodeIgniter vận dụng mô hình này trong thiết kế, giúp tách biệt các tập tin giao diện với các tập tin xử lý dữ liệu, nâng cao khả năng quản lý và dễ bảo trì.
- Nhỏ gọn: Gói cài đặt chỉ 404KB (không bao gồm phần User Guide). So với các PHP framework khác như CakePHP (1.3MB), Symfony (5.08MB) hay Zend Framework (5.66MB)…kích thước của CodeIgniter giúp giảm thiểu đáng kể không gian lưu trữ.
- Tốc độ nhanh: CodeIgniter được đánh giá là PHP framework có tốc độ nhanh nhất hiện nay. Bằng cơ chế lưu nội dung vào bộ đệm (cache), kiểm tra bộ đệm trước khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số lần truy cập và xử lý dữ liệu, từ đó tối ưu hóa tốc độ tải trang.
- Miễn phí: CodeIgniter được phátt hành dưới giấy phép Apache/BSD mở rộng, cho phép người dùng tự do thay đổi, phát triển và phân phối mã nguồn.
- Hỗ trợ Search Engine Optimization: Cấu trúc URL của CodeIgniter rất thân thiện với các robot tìm kiếm.
- Hệ thống thư viện phong phú: CodeIgniter cung cấp các thư viện phục vụ cho những tác vụ thường gặp nhất trong lập trình web, chẳng hạn như truy cập cơ sở dữ liệu, gửi email, kiểm tra dữ liệu, quản lý session, xử lý ảnh…đến những chức năng nâng cao như XML-RPC, mã hóa, bảo mật…
- Bảo mật hệ thống: Cơ chế kiểm tra dữ liệu chặt chẽ, ngăn ngừa XSS và SQL Injection của CodeIgniter giúp giảm thiểu các nguy cơ bảo mật cho hệ thống.
Những điểm hạn chế
- Chưa hỗ trợ Object-Relational Mapping: Object Relational Mapping (ORM) là một kỹ thuật lập trình, trong đó các bảng của cơ sở dữ liệu được ánh xạ thành các đối tượng trong chương trình. Kỹ thuật này giúp cho việc thực hiện các thao tác trong cơ sở dữ liệu (Create Read Update Delate – CRUD) dễ dàng, mã nguồn ngắn gọn hơn. Hiện tại, CodeIgniter vẫn chưa hỗ trợ ORM.
- Chưa hỗ trợ AJAX: AJAX (Asynchronous JavaScript and XML) đã trở thành một phần không thể thiếu trong bất kỳ ứng dụng Web 2.0 nào. AJAX giúp nânng cao tính tương tác giữa người dùng và hệ thống, giúp cho người dùng có cảm giác như đang sử dụng ứng dụng desktop vì các thao tác đều diễn ra “tức thời”. Hiện tại, CodeIgniter vẫn chưa có thư viện dựng sẵn nào để hỗ trợ xây dựng ứng dụng AJAX. Lập trình viên phải sử dụng các thư viện bên ngoài, như jQuery, Script.aculo.us, Prototype hay Mootools… chưa hỗ trợ một số module thông dụng.
- So sánh với framework khác: CodeIgniter không có các module thực thi một số tác vụ thường gặp trong quá trình xây dựng ứng dụng web như Chứng thực người dùng (User Authorization), Trình phân tích RSS (RSS Parser) hay Trình xử lý PDF…
- Chưa hỗ trợ Event-Driven Programming: Event-Driven Programming (EDP) là một nguyên lý lập trình, trong đó các luồng xử lý của hệ thống sẽ dựa vào các sự kiện.
3-Zend FrameWork
Zend Framework (ZF) là sản phẩm framework mã nguồn mở được phát triển trên nền PHP 5.0 theo chuẩn hướng đối tượng. được phát triển theo chuẩn mô hình MVC. Zend Framework có hỗ trợ làm việc với Tempalate engine kết hợp cùng tầng View.
Zend Framework ra đầu tiên, nhưng vẫn thể hiện được sức mạnh của mình cho đến thời điểm hiện nay.
Ưu điểm
- ZF được viết theo kiểu OOP nên nó thừa hưởng các thế mạnh của kiểu viết này. Các lớp của ZF được BA (Business Analysis) rất chuẩn và khi cần mở rộng bạn có thể dùng thể dùng tính chất thừa kế của OOP. Nói chung là chúng ta không phải chỉnh sửa core của ZF.
- Hầu như các version mới của ZF ko có nhiều thay đổi trong core nên ta có thể update.
- ZF tích hợp được gần như tất cả các thư viện PHP và các CMS khác để sử dụng. Ví dụ như Smarty – Pear – FCKEditer – Drupal ..
- Các viết của ZF rất thân thiện và đơn giản. Tích hợp những mới nhất của lập trình như: JSON – Search – Syndication – Web Services… ZF được sử dụng trong các dự án lớn và có kế hoạch phát triển dài lâu.
Khuyết điểm
- Mất nhiều thời gian để tìm hiểu về thư viện của ZF, khó khăn cho những người mới bắt đầu, không có tài liều chuẩn.
- Một số lớp chưa ổn định, có sự thay đổi, gây khó khăn cho người sử dụng khi cập nhật
4-CakePHP
CakePHP là 1 PHP framework, được viết theo chuẩn mô hình MVC dựa theo mô hình của Ruby on Rails.
CakePHP sử dụng các chuẩn mới nhất để xây dựng như software engineering concepts và software design patterns, ví dụ như : Convention over configuration, Model-View-Controller, Active Record, Association Data Mapping, và Front Controller.
CakePHP được biết đến vào tháng 4 năm 2005, khi một lập trình viên người Ba Lan Michal Tatarynowicz đã viết một phiên bản tối thiểu của một khung ứng dụng dựa trên PHP, Ông đã xuất bản nó theo khuôn khổ theo giấy phép MIT, và phát hành nó lên mạng để các cộng đồng trực tuyến của các nhà phát triển có thể sử dụng. Trong tháng 12 năm 2005, L. Masters và GJ Woodworth thành lập công ty phần mềm Cake Foundation để thúc đẩy việc phát triển liên quan đến CakePHP. Sau hơn một năm kể từ khi nó suất hiện thì phiên bản 1.0 được phát hành vào tháng 5 năm 2006.
CakePHP là một framework mạnh mẽ nó hỗ trợ cho các programmer tạo ra các web applications 1 cách dễ dàng và tiện lợi hơn, phát triển nhưng dự án lớn dựa trên công nghệ điện toán đám mây.
Dưới đây là 1 số ưu điểm của CakePHP:
- Tương thích với PHP 5.2.8 trở lên
- Tích hợp tính năng CRUD trong việc thao tác với database
- Code generation
- Cấu trúc MVC rõ ràng
- Khả năng điều chỉnh URL và routes mạnh
- Data Validation
- Hỗ trợ các lớp Helpers trên Views
- Hỗ trợ các components và utilities như email , cookie, session, security
- Hỗ trợ ACL và Authentication
- Caching với nhiều phương thức : File, memcached, Redis
- Hỗ trợ đa ngôn ngữ
- Hỗ trợ nhiều kết nối database : MySQL,PostgreSQL, MSSQL,..
5-Symfony
Ra mắt và năm 2005, là một framework mạnh mẽ, Symfony là sự kết hợp giữa tính vững bền của PHP, sự tự do của Open Soure với đặc tính dễ bảo trì của một mã lập trình được thiết kế theo mô hình MVC (Model-View-Controller).
Symfony là một framework Open Source viết bằng ngôn ngữ lập trình PHP5. Symfony giúp phát triển ứng dụng web thiết kế theo yêu cầu. Một cộng đồng rộng lớn các lập trình viên đảm bảo về khả năng phát triển, tính linh động, tự do và tiết kiệm chi phí cho các dự án được phát triển với Symfony, đây cũng là những đặc tính mà Sutunam luôn chú trọng đưa vào các giải pháp Open Source của mình. Trên hết, cùng với Drupal, phpBB và ezPublish, Symfony2 hiện đang là một trong những phiên bản hệ thống quản trị nội dung (CMS) mới nhất được viết bằng PHP.
Symfony có những ưu điểm như:
- Dễ cài đặt và cấu hình trên hầu hết các hệ điều hành và được bảo đảm làm việc tốt trên các hệ điều hành chuẩn *nix(Linux và Unix) và Windows
- Độc lập với hệ cơ sở dữ liệu
- Dễ dùng trong hầu hết các trường hợp nhưng vẫn đủ mềm dẻo để thích nghi với những trường hợp phức tạp
- Hoạt động theo cấu hình định trước – lập trình viên chỉ cần cấu hình trong những trường hợp riêng biệt không theo quy ước.
- Tuân theo những hoạt động và mẫu thiết kế tốt nhất
- Sẵn sàng cho môi trường xí nghiệp – thích nghi với những chính sách và kiến trúc công nghệ thông tin và đủ ổn định cho những dự án dài hạn.
- Mã rất dễ đọc, với những chú thích kiểu phpDocumentor, dễ dàng bảo trì
- Dễ dàng mở rộng, cho phép tích hợp với những thư viện khác
Những tính năng dự án web được tự động
Hầu hết các chức năng thông thường của những dự án web được tự động trong symfony, như sau:
- Lớp ngôn ngữ có sẵn cho phép phiên dịch giao diện, dữ liệu cũng như là những nội dung đa ngôn ngữ.
- Phần trình diễn sử dụng template và layout có thể được xây dựng bởi người thiết kế HTML mà không cần có kiến thức về framework. Các helper làm giảm số lượng mã trình diễn phải viết bằng cách tóm gọn các phần của mã vào những hàm đơn giản.
- Các form hỗ trợ kiểm tra và điền tự động, và điều này đảm bảo chất lượng tốt của dữ liệu trong cơ sở dữ liệu và kinh nghiệm người sử dụng tốt hơn.
- Việc đưa thông tin ra ngaoỡ bảo vệ các ứng dụng khỏi những tấn công thông qua dữ liệu bị hỏng.
- Những tính năng quản lý cache giúp giảm lượng băng thông và tải của máy chủ.
- Những tính năng phân quyền và xác nhận giúp việc tạo các quản lý những mục hạn chế và bảo mật người dùng dễ dàng hơn.
- Việc định hướng và các URL thông minh làm cho phần địa chỉ của các trang trở nên thân thiện với máy tìm kiếm.
- Các tính năng quản lý API và email sẵn có cho phép ứng dụng web vượt qua những tương tác trình duyệt cổ điển.
- Các danh sách trở nên thân thiện với người dùng hơn nhờ việc phân trang, sắp xếp và tìm kiếm 1 cách tự động.
- Các phần hỗ trợ (plugins) cung cấp khả năng mở rộng ở mức cao.
- Các tương tác AJAX dễ hiện thực nhờ vào các helper một dòng tóm lượt những hiệu ứng javascript tương thích với các trình duyệt.
Trên đây T3H.edu.vn đã liệt kê một số tính năng, đặc điểm nổi bật của 5 php framework phổ biến hiện nay, mỗi Framework có một tính năng và đặc điểm riêng, tùy theo từng đặc điểm của dự án, khách hàng mà các bạn nên chọn framework phù hợp.