Framework
Anh cho em hỏi là em muốn viết 1 framework của PHP thì em cần đọc những tài liệu nào ạ? Mình có thể so sánh các framework của PHP được không ạ?
3 CÂU TRẢ LỜI
Nó còn tuỳ thuộc vào việc bạn viết Framework dành cho việc gì, và độ phức tạp của Framework lớn đến đâu nữa Để viết một Framework phục vụ cho một trang web đơn giản thì có lẽ không có gì quá phức tạp, khi bạn chỉ cần nắm rõ những tư tưởng của mô hình MVC là đủ. Tuy nhiên để mà làm ra một Framework có tính ứng dụng trong các sản phẩm thực tế, ở mức enterprise thì đó lại là một chuyện khác, yêu cầu sự hiểu biết sâu sắc về PHP cũng như rất nhiều kiến về Design Patterns, Design Principles, Security ...
Những tài liệu từ cơ bản đến nâng cao về PHP bạn có thể tham khảo ở PHP The Right Way Về sách thì bạn có thể tìm đọc cuốn Modern PHP
Kiến thức cơ bản về Design Patterns, Design Principles bạn có thể tìm thấy qua nhiều bài viết trên Viblo, tuy nhiên để hiểu sâu về nó thì có lẽ cũng phải đọc sách
Còn để xây dựng một Framework tốt thì có lẽ cách nhanh nhất là đi tham khảo những Framework đã có hiện nay, xem chúng được viết nên như thế nào, có những điểm gì đặc biệt. Mình thì suggest bạn nên tham khảo code của Laravel Framework
Nếu bạn muốn có cái nhìn so sánh tổng quan về các Framework PHP phổ biến hiện nay, bạn có thể tham khảo một số bài sau: https://medium.com/level-up-web/best-php-frameworks-for-web-developers-in-2017-c8a041671a79 https://coderseye.com/best-php-frameworks-for-web-developers/
Để làm PHP Framework thì cũng không cần đọc nhiều tài liệu lắm đâu. Chỉ cần hiểu và nắm vững về Design Pattern. Mối quan hệ của các Design Pattern và nguyên lý thiết kế SOLID. Zend, Laravel, Symfony đều là những Framework áp dụng SOLID ở mức cao. Ví dụ sức mạnh của Zend nằm ở Service Locator, của Laravel là ở Service Container thì cả 2 cái đó đều xuất phát từ SOLID. Sau đó thì tham khảo kiến trúc của các Framework. Đơn giản nhất là Codeigniter, áp dụng chủ yếu MVC, không sử dụng quá nhiều kiến trúc phức tạp. Sau đó có thể là Symfony hoặc Laravel. Bản chất của Web App là nhận 1 request và trả lại 1 response. Framework kiến trúc nào thì cũng nhận 1 request và trả lại 1 response. Bạn có thể hình dung Framework như 1 cái pipeline, đầu vào là user request, đi tới đoạn nào đó dựa vào thông tin request mà Framework sẽ gọi tới thành phần tương ứng để xử lí cái request đó. Và cuối cùng đầu ra của cái request đã xử lí là 1 cái response thoả mãn người dùng. Theo nguyên lý đó thì với mô hình MVC đơn giản cái Pipeline đó là từ Route -> Controller -> Model -> View. Còn với các Framework hiện đại nó sẽ phức tạp hơn. Ví dụ như Route -> Dispatcher -> View hoặc Route -> Dispatcher -> Controller -> Service -> Model -> View... Đây là Framework mình viêt dựa trên Domain Driven Design và Symfony Component. Nó chưa hoàn thiện lắm. https://github.com/bienhoang/cloudy-mvc
Bạn có thể tìm hiểu về Symfony nhé. Tài liệu hướng dẫn khá chi tiết về các Component để tự build một Framework theo ý thích bản thân. http://symfony.com/doc/current/create_framework/index.html Đầu tiên bạn cần phải hiểu rõ mục đích của việc tạo Framework làm gì? Kiến trúc của một Framework như thé nào? Phần lớn các Component đã có sẵn, được kiểm nghiệm về security, performance ... rồi Sử dụng và kết thừa cái có sẵn sẽ tốt hơn
Cho một người mới bắt đầu Trước mình mới hoc thì đọc PHP cơ bản từ trang chủ Sau đó nhảy vào làm theo tut của thầy Quang này https://www.youtube.com/watch?v=ppIEhL-UMAc&list=PL8qfx7Oihtup6tvVOa9lbah6K9HVRyvfz vì môn học của mình yêu cầu tạo mini framework với PHP để làm quen, nhưng sau đó mình cũng chưa có tìm hiểu sâu thêm nên ít tài liệu lắm Đây chỉ là một mini MVC framework để mình có cái nhìn cơ bản và áp dụng được với một trang web "đơn giản" Các khái niệm thì mình sẽ được giải thích trong video, nếu còn chưa rõ có thể search thêm tài liệu để đọc
Bạn có thể tham khảo qua framework MVC nho nhỏ của mình viết tại đây https://github.com/kmasteryc/lovesimplefw Cái này mình xây trên mô hình MVC cơ bản.