Tải bản đầy đủ (.docx) (35 trang)

báo cáo thực tập tốt nghiệp Tìm hiểu Framework Symfony và xây dựng hệ thống website quản lý thuế đất

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.15 MB, 35 trang )

BÁO CÁO THỰC TẬP TỐT NGHIỆP

LỜI NÓI ĐẦU
Ngày nay chúng ta đang sống trong một kỷ nguyên bùng nổ về
công nghệ thông tin. Công nghệ thông tin không chỉ dừng lại ở mục đích
phục vụ cho khoa học kỹ thuật mà còn đi sâu vào đời sống, chính trị,
kinh tế, xã hội, trở nên thân thiện, gần gũi, mang lại nhiều lợi ích cho con
người.
Trong các ngành đang phát triển nhất hiện nay của công nghệ
thông tin là thiết kế và quản trị một websile đang được nhiều người quan
tâm. Nhưng khi thiết kế một websile điều đầu tiên được các lập trình viên
quan tâm là ngôn ngữ lập trình. Có thể nói PHP là lựa chọn tối ưu cho
một websile.
Sau khi về nơi thực tập được các anh chị ở trung tâm hỗ trợ phát
triển công nghệ thông tin trực thuộc sở khoa học và công nghệ tỉnh Bình
Định (sau đây gọi tắt là trung tâm) hướng dẫn tìm hiểu Frameworks
symfony để ứng dụng phát triển một websile tính thuế đất, trong quá
trình thực tập em đã được biết thêm rất nhiều kiến thức về Frameworks
symfony một trong những frameworks được sử dụng phổ biến nhất hiện
nay.
Trong 2 tháng thực tập tại trung tâm, em đã thu được rất nhiều kinh
nghiệm quý báu, em xin chân thành cảm ơn nhân viên của trung tâm đã
nhiệt tình hướng dẫn, giúp đỡ cho em hoàn thành tốt nhiệm vụ được giao
trong thời gian thực tập tại đây, đặc biệt là thầy Nguyễn Thanh Tuấn đã
trực tiếp giám sát, hướng dẫn em trong thời gian thực tập vừa qua.
Em xin chân thành cảm ơn!
Sinh viên

Ngô Hoàng Việt
NGÔ HOÀNG VIỆT


1


BÁO CÁO THỰC TẬP TỐT NGHIỆP
MỤC LỤC

PHẦN I
GIỚI THIỆU VỀ TRUNG TÂM HỖ TRỢ PHÁT TRIỂN CÔNG
NGHỆ THÔNG TIN BÌNH ĐỊNH
1. Đôi nét về trung tâm.
Trung tâm hỗ trợ phát triển công nghệ thông tn Bình Định được
thành lập theo Quyết định 81/2002/QĐ-UB ngày 22/7/2002 của UBND
Tỉnh Bình Định.
Trung tâm có tên tiếng Anh: BinhDinh Centre for Developmental
Assistance of Imformation Technology (viết tắt là: CEDASIT).
Trung tâm có trụ sở tại 68 Lê Duẩn, thành phố Quy Nhơn, tình
Bình Định.
2.

Cơ cấu tổ chức của trung tâm.
Cơ cấu tổ chức của trung tâm gồm các phòng chuyên môn sau:




Phòng hành chính – tổng hợp.
- Thực hiện công tác tổ chức, cán bộ của trung tâm.
- Quản lý công tác tổ chức, cán bộ của trung tâm.
- Thực hiện công tác hành chính, văn thư, lưu trữ, lễ tân…
- Thực hiện công tác quản trị, thủ quỹ, tạp vụ.

- Quản lý giáo trình, thư viện.
Phòng đào tạo.
- Xây dựng kế hoạch đào tạo và thực hiên công tác đào tạo của
Trung tâm.
- Tổ chức cho học viên.
- Tổ chức bảo vệ đề án cho học viên.
- Quản lý học viên.
- Quản trị hệ thống mạng và bảo trì thiết bị tin học của Trung
tâm.

NGÔ HOÀNG VIỆT

2


BÁO CÁO THỰC TẬP TỐT NGHIỆP




3.

Quản lý giáo viên, bao gồm thi sát hạch đối với giáo viên.

Phòng công nghệ
- Thực hiện thiết kế, xây dựng và bảo trì phần mềm.
- Thực hiện lắp đặt, bảo trì, bảo dưỡng phần cứng cho các hoat
động dich vụ.
- Triển khai các đề tài, dự án lĩnh vực công nghệ thông tin.
Phòng tư vấn – tiếp thị

- Thực hiện hoạt động tư vấn và tiếp thị học viên.
- Thực hiện hoạt đổng quảng cáo, dịch vụ về lĩnh vực công
nghệ thông tin.
- Thực hiện công tác quan hệ học viên, giới thiệu việc làm cho
học viên.
- Tổ chức thi đấu vào các lớp học trình viên và lấy Feedback
học viên.
- Thực hiện Website của trung tâm

Chức năng và nhiêm vụ của trung tâm.


Chức năng của trung tâm

Trung tâm có chức năng thực hiện liên kết đào tạo nguồn nhân lực,
sản xuất và gia công phần mềm, hợp tác quốc tế về lĩnh vực công nghệ
thông tin và thực hiện các dịch vụ về công nghệ thông tin.


Nhiêm vụ của trung tâm
• Liên kết đào tạo nguồn nhân lực trong lĩnh vực công nghệ
thông tin.
• Sản xuất phần mềm máy tính theo đơn đặt hang và cung ứng
cho các tổ chức, cá nhân có nhu cầu.
• Dich vụ thiết kế, lắp đặt hệ thống mạng vi tính, cung cấp các
dịch vụ Internet và gia tang trên mạng.
• Dịch vụ cung cấp các thiết bị điện tử, viễn thông, công nghệ
thông tin, thiết bị văn phòng.
• Tư vấn lập dự án đầu tư trong lĩnh vực công nghệ thông tin.
• Thực hiện hợp tác quốc tế trên các lĩnh vực hoạt động của

trung tâm.
• Quản lý công tác tổ chức, cán bộ, viên chức, tài chính, tài sản
của trung tâm theo phân cấp,và theo quy định của Nhà nước.

NGÔ HOÀNG VIỆT

3


BÁO CÁO THỰC TẬP TỐT NGHIỆP

PHẦN II

1.

NỘI DUNG THỰC TẬP
Mục đích và nội dung thực tập.
1.1

Mục đích

Qua đợt thực tập nhằm rèn luyện cho sinh viên:


Về ý thức:


Tính tổ chức kỷ luật trong nghề nghiệp.




Nâng cao ý thức của người cán bộ khoa học.



Tinh thần trách nhiệm đối với công việc được giao.



Tinh thần khắc phục mọi khó khăn, phát huy tính tích cực
trong học tập.



1.2

Về chuyên môn:


Giúp cho sinh viên củng cố kiến thức đã được tiếp thu tại
trường Đại học



Vận dụng những kiến thức đã học vào môi trường làm việc
thực tế. Góp phần đào tạo toàn diện về trình độ, kỹ năng
thực hành cũng như phương pháp học tập, nghiên cứu cho
sinh viên nhằm mục đích đạt chất lượng tốt trong học tập
nhằm đáp ứng nhu cầu của xã hội nhằm phát triển đất nước.




Bổ sung những kiến thức cần thiết cho sinh viên trong thời
gian thực tập vào công việc sau này, nhằm củng cố thêm
nhận thức và nâng cao tay nghề chuyên môn của người cán
bộ khoa học trong tương lai.

Nội dung thực tập


NGÔ HOÀNG VIỆT

Tìm hiểu và nghiên cứu về Framewords symfony

4


BÁO CÁO THỰC TẬP TỐT NGHIỆP

2.



Tìm hiểu phương pháp làm website trên nền symfony.



Thực hành cài đặt symfony.




Thiết kế trang website tính thếu đất.



Tham gia các cuộc họp của sở.



Trao đổi học hỏi kinh nghiệm

Nhật ký thực tập
Ngày 21/1/2013 tôi chính thức tham gia thực tập tại Trung tâm
Tôi đã được thực tập tại phòng công nghệ của Trung tâm.
Dưới sự phân công của phòng, tôi được anh Mang Đức Hà trực
tiếp hướng dẫn trong thời gian thực tập tại trung tâm.
Kế hoạch thực tập được thực hiện:
Thời gian
Tuần 1

Tuần 4

Nội dung công việc
• Đến cơ quan gặp mặt và làm quen với cán bộ trong
Trung tâm.
• Nắm bắt tình hình chung của phòng công nghệ và
Trung tâm.
• Tìm hiểu cơ cấu tổ chức, chức năng, nhiệm vụ công
việc... tại trung tâm.
• Tìm hiểu một số trang web do phòng thiết kế

• Cập nhâp các công cụ cần thiết cho việc thiết kế một
website
• Cập nhập lại thiết thức về ngôn ngữ PHP
• Tìm hiểu về cách lập trình, thiết kế môt website

Tuần 5



Tìm hiểu Frameworks symfony

Tuần 6



Tham gia thiết kế website tính thuế đất

Tuần 7



Thống kê thu thập nội dung viết báo cáo thực tập

Tuần 8




Tiến hành viết báo cáo thực tập
Tổng kết thực tập


Tuần 2
Tuần 3

NGÔ HOÀNG VIỆT

5


BÁO CÁO THỰC TẬP TỐT NGHIỆP

3.

Tìm hiểu về Frameworks symphony
3.1 Giới thiệu symfony
Là một frameworks tổ chức việc phát triển ứng dụng bằng việc tự
động hóa nhiều mẫu được dùng cho một mục đích xác định. Một
framework tạo cấu trúc cho mã, thúc đẩy lập trình viên viết những mã tốt
hơn, dễ đọc hơn và dễ bảo trì hơn. Cuối cùng, là một frameworks làm
cho việc lập trình dễ hơn bởi vì nó bao hàm những tác vụ phức tạp trong
những câu lệnh đơn giản.
Symfony là một frameworks đầy đủ được thiết kế để tối ưu việc
phát triển ứng dụng web bằng một vài đặc điểm chính. Với những người
mới bắt đầu, nó phân chia những qui tắc nghiệp vụ, server logic và phần
hiển thị của ứng dụng web. Nó có những công cụ và class để thu ngắn
thời gian phát triển của những ứng dụng web phức tạp. Thêm vào đó, nó
tự động hóa những công việc thông thường để lập trình viên có thể tập
trung hoàn toàn vào những đặc điểm của ứng dụng. Kết quả cuối cùng
của những điểm lợi này là không cần phải lặp lại (reinvent the wheel)
mỗi lần tạo ứng dụng web!

Symfony được viết hoàn toàn bằng PHP 5. Nó đã được kiểm tra
một cách hoàn hảo trong nhiều dự án thực tế khác nhau và thực sự được
dùng cho những website kinh doanh điện tử có yêu cầu cao. Nó tương
thích với hầu hết các loại cơ sở dữ liệu, bao gồm MySQL, PostgreSQL,
Oracle, và Microsoft SQL Server. Nó chạy trên hệ điều hành Unix và
Windows. Hãy bắt đầu xem xét những tính năng của nó.
3.2 Cài đặc symfony
Trước tiên, chúng ta phải có một web server (Apache chẳng hạn),
một hệ quản trị cơ sở dữ liệu (MySQL, PostgreSQL, hoặc SQLite), và
PHP 5.2.4 trở lên.
Chúng ta sẽ sử dụng dòng lệnh rất nhiều, tốt nhất là sử dụng hệ
điều hành họ Unix, nhưng nếu bạn dùng Windows, bạn cần gõ các lệnh
từ cửa sổ cmd.
Để
cài
đặt
symfony,
download
trên trang web symfony. Hướng

NGÔ HOÀNG VIỆT

6


BÁO CÁO THỰC TẬP TỐT NGHIỆP
dẫn này được viết trên symfony 1.2, hãy download phiên bản mới nhất
của symfony 1.2. Ở đây tôi sẽ giới cách cài đặt symfony trên windows.
Download, giải nén, đổi tên thư mục thành symfony. Sau khi đổi
tên thư mục thành symfony, chúng ta có thư mục như sau

c:\development\sfprojects\jobeet\lib\vendor\symfony.
Tạo project
c:\> php lib\vendor\symfony\data\bin\symfony generate:project jobeet

Tạo application
php symfony generate:app --escaping-strategy=on --csrf-secret=Unique$ecret
frontend

3.3 Những tính năng của symfony
Symfony được xây dựng để thực hiện các yêu cầu sau:
Dễ dàng cài đặt và cấu hình trên hầu hết các hệ điều hành.
Độc lập với hệ cơ sở dữ liệu.
Dễ dung 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.
• 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 tich hợp với những thư viên
khác.
Những tính năng dự án web được tự động




3.4


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:



NGÔ HOÀNG VIỆT

Lớp internationalization có sẵn cho phép phiên dịch giao
diện, dữ liệu cũng như là content localization.
Phần presentation 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ã
7


BÁO CÁO THỰC TẬP TỐT NGHIỆP

3.5

presentation phải viết bằng cách tóm gọn các phần của mã
vào những function đơ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 escape output 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 factory, plugins và mixins 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 1 dòng
tóm lượt những hiệu ứng javascript tương thích với các trình
duyệt.
Môi trường và công cụ phát triển

Để đáp ứng những yêu cầu của những doanh nghiệp có các chuẩn
viết mã riêng và các qui tắc quản lý dự án, symfony có thể hoàn toàn
được tùy biến. Mặc nhiên nó cung cấp 1 vài môi trường phát triển và
được gói gọn với nhiều công cụ để tự động hóa những nhiệm vụ công
nghệ phần mềm thông thường:




NGÔ HOÀNG VIỆT

Các công cụ sinh mã tự động rất tuyệt cho việc tạo bản
prototype và phần quản lý backend chỉ với vài dòng lệnh.
Unit và funtional testing framework sẵn có cung cấp những
công cụ rất tốt cho phép test-driven development

Debug: giúp debug tất cả thông tin mà lập trình viên cần trên
trang
8


BÁO CÁO THỰC TẬP TỐT NGHIỆP
Giao diện chế độ dòng lệnh tự động hóa triển khai các ứng
dụng giữa hai server
• Tính năng logging cung cấp cho adminnistrators những chi
tiết đầy đủ về sự hoạt động của một ứng dụng
Những khái niệm cơ bản


3.6

Trước khi chúng ta bắt đầu với symfony, chúng ta nên tìm hiểu 1
vài khái niệm cơ bản. Hãy bỏ qua nếu chúng ta đã biết về OOP, ORM,
RAD, YAML, và PEAR.
Symfony được phát triển trên PHP 5 ( và được
dùng để xây dựng những ứng dụng web sử dụng cùng ngôn ngữ. Vì vậy,
việc hiểu biết chắc chắn PHP 5 là điều kiện cần để tận dụng tất cả chức
năng của framework này.
3.6.1

Lập trình hướng đối tượng (OOP)

Lập trình hướng đối tượng (gọi tắt là OOP, từ chữ Anh ngữ objectoriented programming), hay còn gọi là lập trình định hướng đối tượng, là
kĩ thuật lập trình hỗ trợ công nghệ đối tượng. OOP được xem là giúp tăng
năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần
mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần

mềm ở bậc cao hơn. Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu
hơn cho những người mới học về lập trình hơn là các phương pháp trước
đó.
Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm
nhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng
dụng mà các yếu tố bên ngoài có thể tương tác với các chương trình đó
giống như là tương tác với các đối tượng vật lý.
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã
và dữ liệu mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối
tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó
được tiến hành qua tên của nó. Như vậy, mỗi đối tượng có khả năng nhận
vào các thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời
đến các đối tượng khác hay đến môi trường.

NGÔ HOÀNG VIỆT

9


BÁO CÁO THỰC TẬP TỐT NGHIỆP
PHP 5 hiện thực các mẫu của class, object, method và các thứ
khác. Những ai không quen với những khái niệm này có thể xem trong
tài
liệu
liên
quan
đến
PHP,

tại

/>3.6.2

Magic methods

Một trong những sức mạnh của đối tượng PHP là cách dùng các
magic method (phương thức ma thuật). Đây là những phương thức có thể
được sử dụng để override hành vi mặc định của các class mà không cần
chỉnh sửa bên ngoài code. Nó làm syntax của PHP ngắn lại và tăng cường
khả năng mở rộng. Nó dễ dàng tổ chức bởi vì tên của những magic
method này bắt đầu bằng 2 dấu gạch dưới (__).
Ví dụ khi hiển thị 1 object, PHP tự động tìm phương thức
__toString() của object này để hiển thị nếu 1 định dạng hiển thị tuỳ biến
được định nghĩa bởi lập trình viên:
PHP Code:
$myObject = new myClass();
echo $myObject;
// Will look for a magic method echo $myObject->__toString();

Symfony sử dụng những magic method này, vì vậy bạn nên hiểu
cặn kẽ về nó. Nó được mô tả trong tài liệu PHP
( />3.6.3

Kho ứng dụng và phần mở rộng của PHP (PEAR)

PEAR - PHP Extension and Application Repository - là "một
framework và hệ thống phân phối cho những component PHP có khả
năng tái sử dụng". PEAR cho phép bạn download, cài đặt, nâng cấp và gỡ
bỏ các script PHP. Khi sử dụng 1 gói PEAR, bạn không cần quan tâm
những script này đặt ở đâu, làm sao có thể kiếm được hay làm sau để mở
rộng giao diện dòng lệnh (CLI)

PEAR là 1 project community-driven được viết bằng PHP và được
kèm theo các bản phân phối PHP chuẩn.
NGÔ HOÀNG VIỆT

10


BÁO CÁO THỰC TẬP TỐT NGHIỆP
TIP Website của PEAR, cung cấp tài liệu và
các
gói
được
nhóm
thành
các
mục.
PEAR là cách chuyên nghiệp nhất để cài các thư viện trong PHP.
Symfony khuyến cáo sử dụng PEAR để cài đặt cho các project. Các
plugins của symfony là những gói PEAR với những cấu hình đặc biệt. Tự
bản thân symfony cũng là 1 gói PEAR.
Chúng ta không cần biết tất cả các cú pháp PEAR để sử dụng
symfony. Chúng ta chỉ cần hiểu nó làm gì và cài đặt. Chúng ta có thể
kiểm tra PEAR có đưọc cài ở máy bạn không bằng cách gõ như sau trong
CLI:
PHP Code:
pear info pear

Lệnh này sẽ trả về phiên bản của bản PEAR bạn đang dùng. Dự án
symfony có kho chứa và kênh PEAR riêng. Chú ý rằng những kênh này
chỉ phù hợp với PEAR bản 1.4.0 trở đi, vì vậy chúng ta cần nâng cấp

phiên bản PEAR nếu nó cũ hơn. Để nâng cấp PEAR, sử dụng lệnh sau:
pear upgrade PEAR
3.6.4

Cơ sở dữ liệu có tính chất quan hệ (ORM)

PHP 5 và symfony có tính hướng đối tượng. Để truy xuất vào cơ
sở dữ liệu theo cách hướng đối tượng, cần phải có một giao diện chuyển
đổi logic đối tượng sang logic quan hệ. Giao diện này gọi là sự ánh xạ
đối tượng có tính quan hệ (object-relational mapping) hay ORM.
Một lợi ích của lớp trừu tượng đối tượng có tính quan hệ là nó
ngăn chúng ta sử dụng cú pháp đặc trưng cho một cơ sở dữ liệu. Nó tự
động chuyển đổi những lời gọi model object (đối tượng mô hình) thành
những câu SQL tối ưu cho cơ sở dữ liệu hiện tại.
Điều này đồng nghĩa với việc chuyển đổi sang hệ cơ sở dữ liệu
khác khi đã đi một nửa dự án trở nên dễ dàng. Hãy tưởng tượng rằng
chúng ta đang viết 1 phiên bản prototype cho một ứng dụng nhưng khách
NGÔ HOÀNG VIỆT

11


BÁO CÁO THỰC TẬP TỐT NGHIỆP
hàng chưa quyết định hệ cơ sở dữ liệu nào phù hợp với yêu cầu của họ.
Chúng ta có thể bắt đầu ứng dụng của bạn với SQL chẳng hạn, và chuyển
đổi sang MySQL, PostgreSQL hay Oracle khi nào khách hàng có quyết
định. Chỉ cần thay đổi 1 dòng trong file cấu hình và mọi thứ vẫn hoạt
động.
Một lớp trừu tượng thu gọn logic dữ liệu. Phần còn lại của ứng
dụng không cần phải biết về các câu truy vấn SQL, và phần SQL truy

xuất dữ liệu là dễ viết. Những lập trình viên chuyên lập trình cơ sở dữ
liệu cũng biết một cách rõ ràng cần phải làm gì.
Việc sử dụng đối tượng thay cho bản ghi (record) và class thay cho
table còn có một lợi ích khác: chúng ta có thể thêm các bộ truy xuất khác
cho các table của bạn. Ví dụ nếu bạn có 1 table Client với 2 field là
FirstName và LastName, chúng ta có thể cần Name. Trong thế giới
hướng đối tượng, điều này được thực hiện dễ dàng bằng cách thêm
phương thức truy xuất cho class Client như sau:
PHP Code:
public function getName()
{
return $this->getFirstName().' '.$this->getLastName();
}

Tất cả những hàm truy xuất dữ liệu lặp lại và logic nghiệp vụ của
dữ liệu có thể được bảo trì trong các object này. Ví dụ có một class
ShoppingCart (giỏ hàng) có chứa các item (cũng là đối tượng). Để lấy
tổng số tiền của giỏ hàng, bạn có thể thêm phương thức `getTotal()` như
sau:
PHP Code:
public function getTotal()
{
$total = 0;
foreach ($this->getItems() as $item)
{
$total += $item->getPrice() * $item->getQuantity();
}
return $total;
}


NGÔ HOÀNG VIỆT

12


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hãy tưởng tượng chúng ta sẽ mất bao lâu để viết câu SQL với chức
năng tương tự! Doctrine, một dự án nguồn mở khác, hiện là một trong
những lớp trừu tượng đối tượng có tính quan hệ tốt nhất cho PHP 5.
Symfony tích hợp Propel một cách mặc định vào framework, vì vậy hầu
hết các thao tác dữ liệu được mô tả trong cuốn sách này tuân theo cú
pháp của Propel. Cuốn sách này sẽ mô tả làm thế nào để sử dụng các đối
tương Propel, nhưng nếu cần bản tham khảo đầy đủ, nên ghé thăm
website của Propel ( />3.6.5

Rapid Application Development (RAD)

Việc lập trình những ứng dụng web là công việc chán ngắt và
chậm. Theo những chu kì công nghệ phần mềm thông dụng (ví dụ giống
như một để nghị được đưa ra bởi Rational Unified Process), việc phát
triển ứng dụng web không thể bắt đầu trước khi 1 tập hợp đầy đủ các yêu
cầu được viết ra, nhiều biểu đồ UML được kéo dài và hàng tấn tài liệu sơ
bộ được đưa sản xuất.Điều này được thừa hưởng từ nhiều nhà phát
triển,sự thiếu tính linh hoạt của những ngôn ngữ lập trình( bạn build,
compile, restart, và người biết cái gì khác nữa trước sự chứng kiến
chương trình của bạn chạy), tất cả những điều đó, tổng hợp lại thành một
việc đó là các khách hàng có lí lẽ khá là chính đáng và không thay đổi
suy nghĩ của họ
Ngày nay, việc kinh doanh phát triển rất nhanh, và những khách

hàng hướng tới thay đổi suy nghĩ của họ trong tiến trình phát triển
project. Tất nhiên, họ mong chờ nhóm development tra lắp những cái họ
cần và sữa lại cấu trúc của một ứng dụng một cách nhanh chóng. Thật
may mắn, việc sử dụng mã ngôn ngữ giống như Perl và PHP tạo ra nó áp
dụng một cách dễ dàng cho những chiến lược lập trình, như là RAD, hay
phát triển phần mềm nhanh chóng.
Một trong những tư tưởng của phương pháp học là bắt đầu phát
triển sớm nhất có thể để khách hàng có thể xem trước mẫu quá trình làm

NGÔ HOÀNG VIỆT

13


BÁO CÁO THỰC TẬP TỐT NGHIỆP
việc và đưa ra sự bổ sung trực tiếp. Sau đó ứng dụng được bắt đầu xây
dựng theo quá trình lặp lại, công bố version với những tính năng mới
trong chu trình phát triển ngắn.
Kết quả cho developer là rất nhiều. Một developer không cần suy
nghĩ về tương lai trong quá trình tiếp theo. Phương thức sử dụng đơn giản
và cởi mở có thể làm được. Câu danh ngôn của KISS minh họa :Giữ sự
đơn giản và ngớ ngẫn.
Khi sự yêu cầu mở ra hay khi một tính năng được thêm vào,code
hiện tại thường là một phần của bản viết lại. Quá trình xử lý được gọi là
refactoring, và các vấn đề xảy ra rất nhiều trong tiến trình phát triển Web.
Code được move những nơi khác tùy theo tính chất của nó. Các
phần lặp lại của code được refactored đến một nơi khác, như vậy yếu tố
cốt lõi là: Không lặp lại (DRY).
Và tạo sự chắc chắn rằng ứng dụng chạy bình thường khi nó thay
đổi, nó cần test một cách đầy đủ rằng có thể tự động. Nếu được viết tốt,

các unit test là cách vững chắc để chắc chắn không có sự hỏng hóc nào
khi thêm code hay refactoring code. Một vài phương pháp development
đều quy định viết test trước khi coding đó gọi là test-driven development
(TDD)
Mảng PHP này có thể tự động được tạo bằng cách phân tích chuỗi
YAML sau: NOTE Nhiều nguyên tắc cơ bản khác và thói quen tốt liên
kết lại cho quá trình phát triển nhanh chóng. Một trong những quá trình
phát triển có hiệu quả được gọi là Extreme Programing (viết gọn lại là
XP), và tài liệu về XP sẽ dạy cho bạn nhiều về cách phát triển ứng dụng
nhanh chóng và một cách có hiệu quả. Một sự bắt đầu tốt với seri sách
viết bởi Kent beck (Addsison-Wesley). Symfony là công cụ tuyệt vời cho
RAD. Một vấn đề của thực tế, framework được xây dựng bởi một web
agency applying nguyên tắc RAD cho project của riêng mình. Điều này
có nghĩa là học sử dụng symfony không phải học một ngôn ngữ mới, mà
là áp dụng sự phản xạ và ý kiến tốt nhất để xây dựng những ứng dụng
theo cách hiệu quả hơn. Website dự án symfony đưa ra từng bước hướng
dẫn, minh họa về sự phát triển của một ứng dụng bằng 1 cách nhanh
NGÔ HOÀNG VIỆT

14


BÁO CÁO THỰC TẬP TỐT NGHIỆP
chóng. Nó được gọi là askeet ( />và được giới thiệu cho những người cần học nhiều về cách lập trình
nhanh chóng.
3.6.6

YAML

Theo website chính thức của YAML ( />YAML là "1 định dạng tuần tự dữ liệu có thể phân tích bằng máy đơn

giản được thiết kế để con người có thể đọc và tương tác với những ngôn
ngữ kịch bản". Nói cách khác, YAML là ngôn ngữ rất đơn giản được
dùng để mô tả dữ liệu theo kiểu tựa XML nhưng với cú pháp đơn giản
hơn. Nó đặc biệt hữu dụng để mô tả dữ liệu có thể được chuyển sang các
mảng hoặc hash (bảng băm), giống như sau:
PHP Code:
$house = array(
'family' => array(
'name'
=>
'Doe',
'
parents' => array('John', 'Jane'),
'children' => array('Paul', 'Mar
k', 'Simone')
),
'address' => array(
'number'
=> 34,
'street'
=> 'Main Street',
'city'

HTML Code:
house:
family:
name: Doe
parents:
- John
- Jane

children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: "12345"

Trong YML, cấu trúc được thể hiện thông qua sự thụt vào, các
item liên tục được biểu thị bằng dấu gạch ngang, và các cặp khóa/giá trị
trong 1 ánh xạ được phân chia bởi dấu hai chấm. YAML cũng cung cấp 1
NGÔ HOÀNG VIỆT

15


BÁO CÁO THỰC TẬP TỐT NGHIỆP
cú pháp tốc ký để mô tả cấu trúc tương tự với ít dòng hơn, đó là mảng
được thể hiện trong cặp dấu [] và hash trong cặp dấu {}. Vì vậy, dữ liệu
YAML trên có thể được viết thành với cách ngắn hơn như sau:
HTML Code:
house:
family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
address: { number: 34, street: Main Street, city: Nowheretown, zipcode:
"12345" }

YAML được viết tắt từ "YAML Ain't Markup Language" và được
phát âm là "yamel". Định dạng này xuất hiện khoảng năm 2001 và cách

bộ phân tích YAML tồn tại trong những ngôn ngữ lớn khác nhau. TIP
Đặc tả định dạng YAML có ở Bạn có thể thấy, viết
bằng YAML sẽ nhanh hơn XML (không cần thêm các thẻ đóng hoặc dấu
bao chuỗi), và mạnh hơn những file .ini (không hỗ trợ phân cấp). Đó là lý
do tại sao symfony sử dụng YAML như là một ngôn ngữ ưu tiên để lưu
trữ thông tin cấu hình. Bạn sẽ thấy nhiều file YAML trong cuốn sách này,
nhưng thật ra bạn không cần học nhiều về nó.
3.6.7

Mô hình MVC

Nếu chúng ta đã từng phát triển một website bằng PHP mà không
dùng framework, thường với mỗi trang HTML bạn sẽ dùng một file PHP.
File PHP này sẽ chứa nhiều kiểu cấu trúc: các cấu hình khởi tạo và toàn
cục, business logic liên quan đến yêu cầu của trang, lấy các dữ liệu từ
database, và cuối cùng tạo mã HTML để hiển thị.
Chúng ta có thể sử dụng một templating engine để tách phần logic
và HTML. Tất nhiên, chúng ta cũng có thể sử dụng một database
abstraction layer để tách phần thao tác với model ra khỏi business logic.
Nhưng thường bạn sẽ tạo ra rất nhiều code mà việc maintain trở thành
cơn ác mộng. Có thể chúng ta sẽ xây dựng ứng dụng rất nhanh, nhưng
thật khó để thay đổi, nâng cấp, đặc biệt khi không có ai ngoại trừ chúng
ta hiểu được cách nó làm việc.

NGÔ HOÀNG VIỆT

16


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Có một giải pháp tuyệt vời để giải quyết những vấn đề trên. Đối
với việc phát triển web , giải pháp thường dùng là tổ chức code theo
MVC design pattern. Pattern này chia code thành ba tầng:






Model bao gồm business logic (database nằm ở tầng này). Bạn
đã thấy rằng symfony chứa tất cả các class và file liên quan đến
Model trong thư mục lib/model.
View là những gì tương tác với người dùng (template engine là
một phần của tầng này). Trong symfony, tầng View được tạo
bởi PHP templates. Các file này nằm trong các thư mục
templates khác nhau mà chúng ta sẽ thấy ở các phần sau trong
ngày hôm nay.
Controller thực hiện việc lấy dữ liệu từ Model và chuyển cho
View để hiển thị ở client. Khi chúng ta cài symfony trong ngày
đầu tiên, chúng ta đã thấy rằng mọi yêu cầu được điều khiển bởi
file front controllers (index.php và frontend_dev.php). Những
file front controllers này sẽ tìm actions tương ứng để thực hiện
yêu cầu đó. Như chúng ta thấy hôm qua, các action được nhóm
lại trong module.

Hình 1: Mô hình MVC

NGÔ HOÀNG VIỆT

17



BÁO CÁO THỰC TẬP TỐT NGHIỆP
4.

Phân tích và thiết kế hệ thông webside tính thuế đất
4.1 Thực tiễn và mục đích
Ngày nay Internet hỗ trợ mọi lĩnh vực trong công việc cũng như
trong đời sống. Mạng Internet mang lại rất nhiều tiện ích hữu dụng cho
người sử dụng, một trong các tiện ích phổ thông của Internet là hệ thống
thư điện tử (email), trò chuyện trực tuyến (chat), máy truy tìm dữ liệu
(search engine), các dịch vụ thương mại và chuyển ngân, và các dịch vụ
về y tế giáo dục như là chữa bệnh từ xa hoặc tổ chức các lớp học ảo.
Chúng cung cấp một khối lượng thông tin và dịch vụ khổng lồ trên
Internet.
Hầu hết các ngân hàng, các công ty bảo hiểm hay các công ty viễn
thông đều sử dụng Internet để thực hiện mọi thao tác từ các quầy giao
dịch gửi về máy chủ thông qua một Website.
Tại chi cục thuế cũng vậy, để thuận tiện trong việc quản lí cũng
như kịp thời cập nhật mọi thông tin từ nhiều đơn vị, hay cá nhân của cơ
quan thì một Website hỗ trợ cho việc quản lí và tính toán, thống kê và báo
thuế đúng thời hạn.
Mục đích của Website có thể thao tác hầu hết các công việc mà
trước đây hoàn toàn làm trên bảng giấy cũng như phần mềm ứng dụng tại
cơ quan. Với các phần mềm như vậy tất nhiên không phải lúc nào cũng
dễ dàng cập nhật thông tin vào cơ sở dữ liệu một cách bất kỳ mọi lúc mọi
nơi được.
Chính vì vậy, đây không phải là một website tin tức bình thường
mà là website ứng dụng, mọi chức năng nhằm đáp ứng tốt nhất cho yêu
cầu công việc của một cơ quan thuế.

4.2 Quy trình của công tác thuế
4.2.1 Thu nhận các tờ khai thuế
Cán bộ, nhân viên thuế sẽ nhận các tờ khai thuế sau khi gửi các đối
tượng khai báo thuế đăng ký đầy đủ thông tin trong tờ khai theo mẫu kết
xuất ra từ chương trình quản lý thuế. Có thể phân chia theo khu vực mà
mỗi cán bộ sẽ quản lý và thu nhận tờ khai trên địa bàn của mình.

NGÔ HOÀNG VIỆT

18


BÁO CÁO THỰC TẬP TỐT NGHIỆP
4.2.2 Nhập thông tin tờ khai
Sau khi thu nhận các tờ khai, cán bộ sẽ tiến hành nhập thông tin
các tờ khai vào chương trình. Trong thao tác nhập tờ khai này có thể xảy
ra tình huống một đối tượng khai báo thuế có thể có nhiều thửa đất, lúc
này có thể thông tin của đối tượng đó đã được nhập, như vậy thao tác
nhập tờ khai lúc này chỉ cần cập nhận thông tin thửa đất. Nếu mọi thông
tin hoàn toàn mới thì một tờ khai mới lúc này sẽ cập nhật mới tất cả
thông tin. Thông tin của tờ khai bao gồm: thông tin đối tượng khai báo
thuế (chủ thửa đất), thông tin thửa đất. Mọi thông tin đều được lưu trữ
vào một cơ sở dữ liệu chung của hệ thống.
4.2.3 Tính toán thuế phải nộp cho mỗi đối tượng nộp thuế
Sau khi cập nhật thông tin tờ khai, chương trình tiến hành tính thuế
theo quy định của nhà nước đã được đưa vào chương trình. Tất nhiên khi
tiến hành tính toán có thể có đối tượng nộp thuế sở hữu nhiều thửa đất thì
chương trình cũng sẽ tính toán đúng theo quy định.
4.2.4 Tra cứu, chỉnh sửa, bổ sung
Mọi thông tin khi được nhập vào chương trình đều được tra cứu dễ

dàng, kết quả trả về nhân viên thuế có thể thao tác như chỉnh sửa, bổ
sung tùy theo nhu cầu.
4.2.5 Thông báo thuế, nhâp chứng từ, thống kê thuế của đối tượng
nộp thuế
Đến hạn nộp thuế, nhân viên thuế phải in gửi giấy thông báo thuế
đến đối tượng nộp thuế. Tùy theo từng địa phương mà chia ra các kỳ nộp
thuế, tại Kon Tum thời gian nộp thuế chia làm hai kỳ. Sau khi đối tượng
nộp thuế đã hoàn thành nộp thuế thì nhân viên quản lý phải nhập chứng
từ vào chương trình, rồi tiến hành thống kê lại để biết được mỗi đối
tượng nộp thuế đã nộp bao nhiêu và còn lại bao nhiêu để thông báo trong
kỳ tiếp theo.
4.2.6 Báo cáo thuế

NGÔ HOÀNG VIỆT

19


BÁO CÁO THỰC TẬP TỐT NGHIỆP
Báo cáo thuế cho lãnh đạo tùy theo yêu cầu của lãnh đạo, ở đây có
hai loại thông tin thuế cần phải báo cáo là: báo cáo theo định kỳ, báo cáo
theo địa phương.
4.3 Các chức năng
4.3.1 Với webside ứng dụng này, các chức năng chính bao gồm:
Nhân viên thuế nhập một tờ khai cá nhân, nhập một tờ khai tổ
chức.
• Tra cứu một tờ khai.
• Kết xuất tờ khai.
• Sao lưu cơ sở dữ liệu.
4.3.2 Các tác nhân của hệ thống






Nhân viên thuế nhập thông tin, tra cứu thông tin, in báo cáo.
Quản trị hệ thống: quản trị các chức năng liên quan.

4.3.3 Nhận định các ca của hệ thống


-

Nhân viên thuế:
Nhập tờ khai.
Quản lý tờ khai.
Thông báo thuế.
Báo cáo thuế.
Tra cứu tờ khai.
Quản trị hệ thống:
Quản lý phân quyền chức năng cho nhân viên.
Danh sách nhân viên thuế sử dụng ứng dụng.
Danh sách tài khoản của ứng dụng.
Sao lưu cơ sở dữ liệu.
4.3.4 Các ca sử dụng










NGÔ HOÀNG VIỆT

Đăng nhập.
Nhập tờ khai.
Tính thuế.
In tờ khai.
Tra cứu tờ khai.
Chỉnh sửa tờ khai.
Bổ sung, xóa tờ khai.
Nhập chứng từ nộp thuế.
20


BÁO CÁO THỰC TẬP TỐT NGHIỆP








Thông báo thuế.
Báo cáo thuế.
Quản lý phân quyền chức năng cho nhân viên.
Danh sách nhân viên thuế sử dụng ứng dụng.

Danh sách tài khoản của ứng dụng.
Sao lưu cơ sở dữ liệu.
Đăng xuất.

4.3.5 Biểu đồ Use Case

NGÔ HOÀNG VIỆT

21


BÁO CÁO THỰC TẬP TỐT NGHIỆP

4.3.6 Lượt đồ các chức năng hoạt động
4.3.6.1 Lượt đồ hoạt động chức năng đăng nhập

NGÔ HOÀNG VIỆT

22


BÁO CÁO THỰC TẬP TỐT NGHIỆP

4.3.6.2 Lượt đồ hoạt động chức năng nhập tờ khai
NGÔ HOÀNG VIỆT

23


BÁO CÁO THỰC TẬP TỐT NGHIỆP


4.3.6.3 Lượt đồ hoạt động chức năng tra cứu tờ khai
NGÔ HOÀNG VIỆT

24


BÁO CÁO THỰC TẬP TỐT NGHIỆP

4.3.7 Các lớp đối tượng trong hệ thống











NGÔ HOÀNG VIỆT

Thửa đất: lưu trữ các thông tin của thửa đất.
Đoạn đường: chứa các thông tin đoạn đường.
Loại đất: chứa các thông tin loại đất.
Thôn: chứa các thông tin về thôn.
Đường: chứa các thông tin các con đường để xác định các đoạn
đường cắt ngang.
Tài khoản: chứa các thông tin tài khoản cũng như thông tin cán

bộ có được phân quyền sử dụng chức năng chương trình.
Tỉnh: chứa các thông tin về tỉnh.
Huyện: chứa các thông tin về huyện.
Xã: chứa các thông tin về xã.
Tờ khai: chứa thông tin tờ khai của người nộp thuế.
25


×