Skip to content
Caution: You are browsing the legacy symfony 1.x part of this website.

Ngày 24: Tổng kết

Language
ORM

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 controllersactions.

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 nhautương ứng với từng môi trường:

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 XSSCSRF 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 widgetsvalidators. 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 Internationalizationlocalization 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 layerPropel objects.

Bạn cũng có thể sử dụng công cụ debug cho responseforms.

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:

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:

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.