Hôm nay chúng ta kết thúc chuyến hành trình thú vị trong thế giới symfony. Trong suốt 23 ngày qua, bạn đã được học symfony qua các ví dụ: từ các design patterns sử dụng trong framework, đến các tính năng mạnh mẽ có sẵn trong framework. Bạn chưa trở thành master về symfony, nhưng bạn đã có đầy đủ những kiến thức cần thiết để bắt đầu xây dựng ứng dụng với symfony.
Hãy tạm quên đi Jobeet, và cùng nhìn lại những tính năng của framework mà ta đã học trong suốt 3 tuần qua.
Symfony là gì?
Symfony framework là một tập các sub-framework riêng biệt được gắn kết lại với nhau, theo cấu trúc của một full-stack MVC framework (Model, View, Controller).
Trước khi tìm hiểu về code, hãy dành chút thời gian để đọc về
lịch sử và triết lý của symfony.
Sau đó, kiểm tra yêu cầu của framework sử dụng script check_configuration.php
.
Cuối cùng, cài đặt symfony. Sau một thời gian, bạn sẽ muốn upgrade lên phiên bản mới nhất của framework.
Framework cũng cung cấp công cụ để dễ dàng deployment.
Model
Model là một phần của symfony được thực hiện nhờ Propel ORM. Dựa trên mô tả về database, nó sẽ tạo ra các class cho các object, form, và filter. Propel cũng tạo ra các câu SQL dùng để tạo các bảng trong database.
Cấu hình database có thể thực hiện thông qua lệnh hoặc chỉnh sửa file cấu hình. Ngoài việc cấu hình, ta còn có thể thêm các dữ liệu khởi tạo nhờ file fixture. Bạn có thể tạo những file này với dữ liệu động.
Đối tượng Doctrine có thể internationalized một cách dễ dàng.
View
Mặc định, View layer trong kiến trúc MVC sử dụng các file PHP làm templates.
Templates có thể sử dụng helpers cho các thao tác sử dụng thường xuyên như tạo một URL hay tạo một link.
Một template có thể sử dụng layout để thêm header và footer. Để views có thể dùng lại được, bạn có thể tạo các slots, partials, và components.
Để tăng tốc độ, bạn có thể sử dụng cache sub-framework để cache toàn bộ trang, một action, hoặc một partials hay components. Bạn cũng có thể tự xóa cache một cách dễ dàng.
Controller
Controller được quản lý bởi front controllers và actions.
Ta có thể dùng lệnh để tạo các module đơn giản, CRUD modules, thậm chí tạo admin modules với đầy đủ chức năng dựa vào các model class.
Admin modules cho phép bạn xây dựng đầy đủ chức năng admin cho ứng dụng mà không cần phải code một dòng nào.
Để ẩn đi công nghệ dùng để phát triển website, symfony sử dụng routing sub-framework giúp tạo ra các URL đẹp. Để giúp việc phát triển web services đơn giản hơn, symfony hỗ trợ nhiều định dạng khác nhau. Bạn cũng có thể tự tạo định dạng cho riêng mình.
Một action có thể forwarded hoặc redirected tới một action khác.
Cấu hình
Symfony framework giúp dễ dàng có những cấu hình khác nhau cho từng môi trường. Một môi trường là tập các thiết lập để phù hợp với development hay production servers. Bạn cũng có thể tự tạo môi trường riêng.
File cấu hình của symfony được xác định ở các mức khác nhau và tương ứng với từng môi trường:
app.yml
cache.yml
databases.yml
factories.yml
generator.yml
routing.yml
schema.yml
security.yml
settings.yml
view.yml
File cấu hình sử dụng định dạng YAML.
Thay vì sử dụng cấu trúc thư mục mặc định và tổ chức ứng dụng của bạn theo các layer, bạn có thể tổ chức chúng theo chức năng và đóng gói lại thành một plugin. Với cấu trúc thư mục mặc định của symfony, bạn cũng có thể chỉnh sửa nó cho phù hợp với nhu cầu của mình.
Debug
Symfony cung cấp rất nhiều công cụ hữu ích để giúp lập trình viên tìm ra lỗi nhanh nhất có thể: từ file log đến web debug toolbar, và các exception rõ ràng.
Các Symfony Object chính
Symfony frameworks cung cấp một số object trừu tượng các đối tượng hay sử dụng trong web projects: request, response, user, logging, routing, và view cache manager.
Những object này được quản lý bởi sfContext
object, và được cấu hình dựa trên factories.
Việc quản lý người dùng sử dụng authentication, authorization, flashes, và attributes lưu trong session.
Bảo mật
Symfony framework có sẵn tính năng bảo mật đối với XSS và CSRF attack. Những thiết lập này có thể được cấu hình từ dòng lệnh, hoặc chỉnh sửa file cấu hình.
Form framework cũng cung cấp sẵn các tính năng bảo mật.
Forms
Do quản lý form là một trong những thao tác phức tạp trong phát triển web, nên symfony cung cấp một form sub-framework để công việc trở nên đơn giản hơn. Form framework có sẵn rất nhiều widgets và validators. Một trong những điểm mạnh của form sub-framework là templates trở nên đơn giản và dễ chỉnh sửa.
Nếu bạn sử dụng Propel, form framework cũng dễ dàng tạo ra các forms và filters dựa trên models.
Internationalization và Localization
Symfony hỗ trợ sẵn Internationalization Và localization nhờ ICU standard. User culture xác định ngôn ngữ và quốc gia của người dùng. Nó có thể tạo bởi người dùng hoặc nhúng trong URL.
Test
Thư viện lime, sử dụng cho unit tests, cung cấp rất nhiều testing methods. Propel objects cũng có thể được test với một database riêng và các fixtures riêng.
Unit tests có thể chạy riêng biệt hoặc gộp chung lại.
Functional tests được thực hiện nhờ
sfFunctionalTest
class, sử dụng một
trình duyệt giả lập cho phép
kiểm tra các object của symfony thông qua các
Tester. Có sẵn các Tester cho
request object,
response object,
user object,
current form object,
cache layer và
Propel objects.
Bạn cũng có thể sử dụng công cụ debug cho response và forms.
Cũng như unit tests, functional tests cũng có thể chạy riêng biệt hoặc gộp chung lại.
Bạn cũng có thể chạy tất cả các test thông qua một lệnh.
Plugins
Symfony framework chỉ cung cấp nền tảng cho ứng dụng web của bạn và dựa trên các plugins để cung cấp thêm các tính năng. Trong loạt bài hướng dẫn này, chúng ta đã nói về sfGuardPlugin
,
sfFormExtraPlugin
, và
sfTaskExtraPlugin
.
Một plugin phải được kích hoạt sau khi cài đặt.
Plugins là cách tốt nhất để đóng góp cho dự án symfony.
Tasks
Symfony CLI cung cấp rất nhiều lệnh, và phần lớn các lệnh hữu ích đã được đề cập trong hướng dẫn này:
app:routes
cache:clear
configure:database
generate:project
generate:app
generate:module
help
i18n:extract
list
plugin:install
plugin:publish-assets
project:deploy
propel:build-all
propel:build-all-load
propel:build-forms
propel:build-model
propel:build-sql
propel:data-load
propel:generate-admin
propel:generate-module
propel:insert-sql
test:all
test:coverage
test:functional
test:unit
Bạn cũng có thể tự tạo lệnh cho mình.
Hẹn gặp lại
Trước khi kết thúc, tôi muốn nói một điều cuối cùng về symfony. Framework có rất nhiều tính năng tốt và rất nhiều tài liệu miễn phí. Nhưng điều quan trọng tạo nên giá trị của Open-Source đó là cộng đồng. Và symfony đã có một cộng đồng đông đảo và năng động. Nếu bạn bắt đầu sử dụng symfony cho dự án của mình, đừng quên tham gia vào cộng đồng symfony:
- Theo dõi user mailing-list
- Theo dõi blog feed trên trang chủ
- Theo dõi symfony planet feed
- Tham gia thảo luận trên #symfony IRC
Người dịch: Nguyễn Hữu Quân - huu2uan [at] gmail.com.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.