Chúng ta đều hiểu rằng việc lập trình thường rất căng thẳng và phải đối mặt với nhiều vấn đề phát sinh trong quá trình phát triển. Không một developer nào muốn sống cùng với một phần mềm đầy lỗi. Chính vì thế, kịch bản hoàn hảo đối với chúng ta, là có thể viết ít code ít lỗi, nhưng lại có thể có một phần mềm hoàn thiện và sẵn sàng sử dụng bất cứ lúc nào. Và có thể nói, Symfony có thể trao cho ta cơ hội đó – một cách dễ dàng hơn nhiều các framework khác :p
Đó là bởi vì, Symfony hướng tới mục tiêu tiết kiệm thời gian và giảm thiểu sự “hỗn loạn” khi lập trình. Nó giúp đời sống của developer dễ thở hơn với các components độc lập và cấu hình thân thiện. Ngoài ra còn gì nữa? Trong bài viết này, ta sẽ cùng tìm hiểu xem những điều thú vị và hữu ích về Symfony.
1. Tốc độ code
Flex
Giảm thiểu thời gian lập trình đồng nghĩa với việc rút ngắn thời gian đưa được sản phẩm ra thị trường. Symfony giúp tiết kiệm thời gian của developers nhờ vào Flex. Flex được sử dụng như một công cụ để cài đặt và quản lý các application. Trong bài viết trước, ta đã biết Symfony tổ chức application code theo hệ thống bundles, và ở đây nhờ vào Flex Recipes – loạt chỉ dẫn để tích hợp packages, cấu hình bundles được tự động thêm vào rất tiện lợi và nhanh chóng.
Autowiring
Autowiring cũng đáng được đề cập là một yếu tố hữu ích với lập trình viên. Nó giúp ta quản lý các service trong container với cấu hình tối thiểu. Chỉ cần viết code, các vấn đề khởi tạo đều được container xử lý.
Doctrine
Thay vì cung cấp một component để làm việc với database, Symfony xử lý tích hợp này với một thư viện bên thứ ba – Doctrine. Doctrine là một ORM thông dụng trong Symfony, và đương nhiên với ORM, nó giúp tăng tốc quá trình lập trình.
2. Chất lượng code
Không nghi ngờ gì việc framework này là framework clean nhất. Chưa nói đến khả năng có thể tái sử dụng, bản thân cơ chế component hoạt động phân tách, độc lập đã giúp framework này trở nên đặc biệt vững chắc, đặc biệt khi ta có thể tập trung xử lý từng task nhỏ một cách chuẩn xác – theo nguyên lý UNIX.
3. Module hóa
Cấu trúc nền tảng module cho phép mọi dự án sử dụng Symfony đều có khả năng co dãn tùy biến khá cao. Symfony trang bị đầy đủ các công cụ để mở rộng dễ dàng và tiện lợi.
Dependency Injection
Dependency Injection được thực hiện thông qua interface. Đa phần các core objects trong Symfony có các dependency kết nối với interface, trong đó container làm nhiệm vụ phân tách nó ra thành lớp cụ thể (concrete class). Điều này có nghĩa rằng ta có thể tạo ra một class cho phép implement interface, và cấu hình container để inject class vào bên trong core objects.
Service decoration
Ta có thể cấu hình container với wrapper class để decorate service. Cách thức hoạt động thông thường sẽ như sau:
- Một class được tạo ra để decorate cho một service
- Class này thêm các chức năng trước hoặc sau khi gọi tới service đã được decorate
- Khi gọi kết quả, container sẽ trả về wrapper thay vì là bản thân service.
Events
Một số component sử dụng event dispatcher. Đương nhiên đây là cách để thêm chức năng vào working core. Bất cứ 1 class nào cũng có thể nhận thông tin từ event này và được thông báo khi có các hoạt động cụ thể bên trong application.
4. Separation of concerns – Phân tách phụ thuộc
Đa phần các lập trình viên làm việc trên Symfony không tìm hiểu nhiều về core của nó. Điều này cũng có thể coi là một điểm tốt, ít nhất trong trường hợp của Symfony. Nó có nghĩa là code độc lập để sử dụng và dễ hiểu ngay cả khi không cần quá đào sâu. Sử dụng Symfony 4, ta thậm chí có thể xây dựng một web application khi học theo hướng dẫn 1 giờ.
5. Kiểm thử
Toàn bộ framework này đều được test rất kỹ lưỡng, các công cụ được tích hợp vào test trong core có thể được sử dụng để test cả application code của bạn.
- CssCrawler
- Http
- Symfony\Bundle\FrameworkBundle\Test\WebTestCase
Bên cạnh đó, PHPUnit Bridge giúp unit testing trở nên đơn giản hơn. Nó cung cấp các tiện ích để báo cáo về test các legacy code và code thừa, ngoài ra nó cũng trợ giúp việc kiểm thử các tính năng chỉ xuất hiện trong những khoảng thời gian nhất định. Nhìn chung, Symfony cung cấp khá nhiều công cụ tuyệt vời cho việc kiểm thử chức năng, kiểm thử hành vi và unit testing. Quá trình này diễn ra tự động, vì thế tiết kiệm nhiều thời gian và công sức của lập trình viên.
6. Hệ sinh thái
API Platform
REST API được liên kết với định nghĩa Doctrine Entity
Sonata Admin
Phần quản lý admin liên kết với Doctrine Entity
LiipImagineBundle
Bundle được tích hợp với thư viện Imagine PHP library
Twig
Templating engine
SymfonyCloud
Ứng dụng cho việc deploy
7. Cộng đồng
Symfony thực sự rất dễ dàng sử dụng, thậm chí với cả những người mới bắt đầu. Symfony cung cấp cho cả dân mới vào nghề lẫn lập trình viên giàu kinh nghiệm các tài liệu toàn diện và chi tiết. Có thể nói đây là một trong những hướng dẫn được viết hữu ích nhất dành cho những người sử dụng framework PHP. Tất cả mọi thứ trong tài liệu đều được viết cụ thể, với các giải thích thực tế cùng minh họa rõ ràng.
Cộng đồng Symfony cũng rất nhiệt tình đóng góp và hỗ trợ. Trong rất nhiều trường hợp, việc cấu hình và thiết lập được đóng góp làm giải pháp để giúp nâng cao performance của ứng dụng.
Người đóng góp
Công đồng Symfony bao gồm hơn 600 nghìn lập trình viên nhiệt huyết trên toàn thế giới. Trong số đó, có khoảng 2000 người đóng góp xây dựng nền tảng Symfony.
Hội thảo
Các sự kiện liên quan tới Symfony được tổ chức quanh năm trên nhiều khu vực và quốc gia trên thế giới. Các sự kiện cũng được cập nhật tại đây:
https://symfony.com/events/
Tài liệu
Documentation về Symfony có thể được truy cập thông qua các kênh online và offline, với cộng đồng khoảng 2000 người hỗ trợ làm việc đằng sau nó
https://github.com/symfony/symfony-docs
Stackoverflow
Stackoverflow chắc chắn là cái tên quá quen thuộc đối với dân lập trình. Với rất nhiều các chủ đề và thảo luận, cộng đồng Symfony hoạt động sôi nổi trên Stackoverflow chắc chắn sẽ giúp trả lời với các cách giải quyết hữu ích, và giúp mở rộng hơn kiến thức của bạn.
“Đơn giản là tất cả” (Simple is the best) – Symfony đã nhấn mạnh triết lý này với việc tập trung vào tính độc lập, giản đơn để giúp tiết kiệm thời gian lập trình. Đây là một trong những PHP framework mạnh mẽ và ổn định nhất, và là công cụ hữu hiệu để xử lý các yêu cầu phức tạp với nhiều thử thách thay đổi trong tương lai.
Bạn là fan của PHP? Hoặc đơn thuần yêu thích riêng Symfony framework và muốn xây dựng những phần mềm tuyệt vời trên nền tảng này, vậy thì bạn và Sutunam đã có nhiều điểm tương đồng rồi! Chính vì thế, chúng tôi tin chắc rằng các chia sẻ trên Sutublog sẽ giúp ích đôi điều cho bạn, dù đó là những kiến thức bạn đã biết nhưng chưa hiểu kỹ, hay một số điều thú vị mà bạn chưa từng biết tới. Thế nên đừng bỏ lỡ những cập nhật sắp tới từ Sutublog nhé.
Nếu bạn cảm thấy bài viết hữu ích, hãy chia sẻ cho các lập trình viên khác cùng biết tới. Sutunam rất hào hứng với những trao đổi và phản hồi thêm từ các bạn để chúng ta có thể cùng thảo luận và trau dồi những kiến thức về Symfony.