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

TÌM HIỂU HỆ THỐNG ĐỊNH VỊ GPS XÂY DỰNG HỆ THỐNG WEB – MOBILE ỨNG DỤNG CHO LĨNH VỰC DU LỊCH

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 (6.69 MB, 91 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, E-mail:
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH: 05115

TÌM HIỂU HỆ THỐNG ĐỊNH VỊ GPS
XÂY DỰNG HỆ THỐNG WEB – MOBILE
ỨNG DỤNG CHO LĨNH VỰC DU LỊCH
Mã số : 102102061115
102101061105
Ngày bảo vệ : 15 – 16/06/2011
SINH VIÊN: HUỲNH ĐỨC DŨNG 06T1
NGUYỄN VĂN HUỲNH 06T2
CBHD: GV.ThS. MAI VĂN HÀ
ĐÀ NẴNG, 06/2011
Tãn âãö taìi åí âáy 2
LỜI CẢM ƠN
Chúng tôi xin dành trang đầu tiên cuả đồ án để cảm ơn quý thầy cô trong khoa Công
nghệ Thông tin, trường Đại học Bách Khoa – Đại học Đà Nẵng đã tận tình dạy dỗ trong
suốt thời gian qua và nhất là đã tạo điều kiện thuận lợi cho chúng tôi học tập, thực hiện đề
tài tốt nghiệp này.
Hơn hết, chúng tôi xin chân thành cảm ơn thầy giáo GV.ThS. Mai Văn Hà đã nhiệt tình
hướng dẫn, tạo mọi điều kiện thuận lợi và góp nhiều ý kiến quý báu trong suốt quá trình
thực hiện đề tài.
Và để có được kết quả như ngày hôm nay, chúng con xin gửi lời biết ơn sâu sắc đến bố
mẹ và các anh chị em trong gia đình đã hết mình ủng hộ vật chất cũng như tinh thần để
giúp chúng con hoàn thành tốt đề tài này.


Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép nhưng chắc
chắn sẽ không tránh khỏi những thiếu sót.Chúng tôi rất mong nhận được sự thông cảm, góp
ý và tận tình chỉ bảo của quý Thầy Cô và các bạn.
Một lần nữa xin chân thành cám ơn!
Tãn taïc giaí åí âáy, LÅÏP XXX 2
Tãn âãö taìi åí âáy 3
LỜI CAM ĐOAN
Chúng tôi xin cam đoan:
1 Những nội dung trong báo cáo này là do chúng tôi thực hiện dưới sự
hướng dẫn trực tiếp của thầy Mai Văn Hà.
2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
chúng
tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Huỳnh Đức Dũng
Nguyễn Văn Huỳnh
Tãn taïc giaí åí âáy, LÅÏP XXX 3
Tãn âãö taìi åí âáy 4
MỤC LỤC
DANH MỤC HÌNH ẢNH
CHƯƠNG 1
TỔNG QUAN ĐỀ TÀI
I. Bối cảnh đề tài
Việt Nam trong những năm gần đây có bước phát triển ấn tượng, tạo dựng được hình
ảnh là điểm đến thân thiện, hấp dẫn du khách. Số lượng khách quốc tế đến Việt Nam đang
ngày càng tăng. Nếu như năm 2000, Việt Nam đón 2,1 triệu lượt khách quốc tế, năm 2008
là 4,2 triệu lượt khách quốc tế và năm 2010, số khách du lịch đến Việt Nam sẽ vượt con số 5
triệu lượt, vượt xa mục tiêu ban đầu là 4,2 triệu lượt. Với tốc độ tăng trưởng trung bình hàng

năm về lượng khách khoảng 20%, Việt Nam ngày càng khẳng định là một điểm đến hấp dẫn
trên bản đồ du lịch thế giới. Số du khách nội địa năm 2010 cũng ước đạt 28 triệu lượt, thu
nhập từ du lịch khoảng 96.000 tỷ đồng, đóng góp khoảng 5% GDP, giải quyết việc làm cho
1,4 triệu lao động.
Từ thực tiễn đó, nhóm chúng em mong muốn ứng dụng tin học vào lĩnh vực du lịch để
góp phần làm cho du lịch Việt Nam ngày càng là một điểm đến yêu thích trên thế giới. Dự
Tãn taïc giaí åí âáy, LÅÏP XXX 4
Tãn âãö taìi åí âáy 5
án “Du Lịch Việt Nam” là một hệ thống gồm website và phần mềm chạy trên di động. Khi
du khách đến Việt Nam, với những chiếc smartphone trên tay thì khách du lịch dễ dàng định
vị được tọa độ của mình nhờ qua GPS. Nếu du khách có cài phần mềm “Du Lịch Việt Nam”
thì dễ dàng chia sẻ những hình ảnh mình chụp được lên website qua GPRS. Đồng thời, phần
mềm trên di động còn cung cấp nhiều thông tin bổ ích về du lịch như: tìm đường, tìm máy
ATM, các địa danh du lịch gần vị trí hiện tại, các quán ăn đặc sản. Với website, từ những
hình ảnh cung cấp từ người dùng là du khách thì lại đem đến cho người dùng trải nghiệm du
lịch qua ảnh rất thực tế. Website sẽ giống như một mạng xã hội về du lịch. Bạn đi du lịch,
bạn chia sẻ hình ảnh lên website. Bạn bè của bạn vào xem, viết cảm nhận, chia sẻ link, bình
chọn ảnh đẹp. Bên cạnh website còn có những chức năng tương tự như phần mềm trên di
động (tìm đường, tìm ATM) thì còn liên kết đến với nhiều nhà hàng, khách sạn để cung cấp
thông tin lên website, cho phép liên hệ đặt hàng online.
II. Mục tiêu đề tài
• Tìm hiểu Yii framework
• Tìm hiểu PhoneGap
• Tìm hiểu Google Map Api
• GPS
Qua dự án này, công việc cần đạt của nhóm là xây dựng để hệ thống tích hợp giữa
website và điện thoại. Hệ thống cung cấp khả năng như sau:
• Dựa vào GPS, định vị được tọa độ của du khách.
• Tìm đường đi, tìm thông tin cần thiết (nhà hàng, khách sạn, bệnh viên, công
viên).

• Xây dựng được webservices để ảnh chụp từ điện thoại được đăng lên website.
• Xây dựng được mạng xã hội du lịch trực tuyến.
Tãn taïc giaí åí âáy, LÅÏP XXX 5
Tãn âãö taìi åí âáy 6
III. Mục đích đề tài
Xây dựng hệ thống phần mềm “Du Lịch Việt Nam” trên website và điện thoại di động,
nhằm quảng bá hình ảnh Việt Nam tới bạn bè trên toàn thế giới và mang lại lợi nhuận cho
ngành kinh doanh du lịch Việt Nam.
IV. Phương pháp triển khai
Sử dụng ngôn ngữ PHP, hệ quản trị cơ sở dữ liệu MySQL để xây dựng hệ thống website
trên framework Yii.
Xây dựng ứng dụng mobile dựa trên framework PhoneGap.
Tãn taïc giaí åí âáy, LÅÏP XXX 6
Tãn âãö taìi åí âáy 7
CHƯƠNG 2
Cơ sở lý thuyết
I Yii framework
IV.1 Giới thiệu
Yii là PHP framework hỗ trợ tốt cho việc phát triển Web 2.0. Yii giúp nhà phát triển xây
dựng những ứng dụng phức tạp với thời gian nhanh nhất. Yii được phát âm là Yee hoặc
[ji:], Yii là viết tắt của “Yes It Is!”. Ý nghĩa của nó là “Is it fast? Is it secure? Is it
professional? Is it right for my next project? Yes, it is!”
Yii hoàn toàn miễn phí, là ứng dụng Web mã nguồn mở được phát triển bằng ngôn ngữ
PHP5. Yii giúp cho việc phát triển ứng dụng Web tuân theo một khuôn khổ nhằm đảm bảo
tính hiệu quả, tính mở rộng, và tính bảo trì của sản phẩm.
Tối ưu hiệu suất, Yii là sự lựa chọn hoàn hảo cho các dự án có quy mô. Yii cho phép nhà
phát triển kiểm soát toàn bộ cấu hình. Yii cung cấp các công cụ giúp kiểm tra và sửa lỗi ứng
dụng dễ dàng.
IV.1.1 
Yii được sáng lập bởi Qiang Xue, người trước đây đã phát triển và bảo trì Prado framework.

Dự án Yii được bắt đầu từ ngày 01/01/2008 và sau gần một năm phát triển, ngày 03/12/2008
Yii 1.0 được chính thức phát hành.
IV.1.2 
Yii kết hợp nhiều ý tưởng từ các framework và các ứng dựng Web nổi tiếng khác. Dưới đây
là một số ý tưởng Yii đã tham khảo:
• Prado: là nguồn gốc chủ yếu cho ý tưởng phát triển Yii, bao gồm: component và mô
hình lập trình hướng sự kiện, các lớp database, mô hình kiến trúc ứng dụng, i18n và
l10n, và nhiều tính năng khác
• Ruby on Rails: Yii kế thừa quy ước về cấu hình
• jQuery: được tích hợp trong Yii framework
• Symfony: Yii kế thừa ý tưởng về filter và kiến trúc plug-in
• Joomla: Yii kế thừa cách thiết kế module và message translation
Tãn taïc giaí åí âáy, LÅÏP XXX 7
Tãn âãö taìi åí âáy 8
IV.2 Cấu trúc thư mục của Yii
Thư mục
Tãn taïc giaí åí âáy, LÅÏP XXX 8
Tãn âãö taìi åí âáy 9
testdrive/
index.php file đầu vào của ứng dụng
index-test.php file đầu vào của test chức năng
assets/ gồm các tài nguyên công khai
css/ các file css
images/ các file hình ảnh
themes/ các themes
protected/ thư mục làm việc chính của người lập tình
yiic yiic command line script cho Unix/Linux
yiic.bat yiic command line script cho Windows
yiic.php yiic command line PHP script
commands/ để tùy ch‹nh cho 'yiic' commands

shell/ để tùy ch‹nh cho 'yiic shell' commands
components/ các components của người phát triển
Controller.php class cha cho tất cả controller
UserIdentity.php class 'UserIdentity' cho authentication
config/ chứa file config
console.php config cho console
main.php config cho ứng dụng
test.php config cho test
controllers/ chứa file controller
SiteController.php lớp controller mặc định
data/ chứa database mẫu
Tãn taïc giaí åí âáy, LÅÏP XXX 9
Tãn âãö taìi åí âáy 10
schema.mysql.sql MySQL database
schema.sqlite.sql SQLite database
testdrive.db SQLite database
extensions/ phần mở rộng của third-party
messages/ nội dung đa ngữ
models/ chứa file model
LoginForm.php form model cho action 'login'
ContactForm.php form model cho action 'contact'
runtime/ file tạm
tests/ test scripts
views/ file view và layout
layouts/ file layout
main.php layout cơ bản dùng cho tất cả các trang
column1.php layout cho trang 1 cột
column2.php layout cho trang 2 cột
site/ file view cho controller 'site'
pages/ page "static"

about.php view cho page "about"
contact.php view cho action 'contact'
error.php view cho action 'error'
index.php view cho action 'index'
login.php view cho action 'login'
Figure 1: Cấu trúc thư mục Yii
Tãn taïc giaí åí âáy, LÅÏP XXX 10






Tãn âãö taìi åí âáy 11
IV.3 Mô hình MVC (Model View Controller)
Figure 2: Mô hình MVC
MVC là một mô hình kiến trúc phần mềm được sử dụng phổ biến trong phát triển ứng dụng
Web. Mục đích chính của MVC là:
• Tách riêng các thành phần logic với giao diện người dùng
• Giúp cho việc thay đổi các thành phần dễ dàng mà không làm ảnh hưởng đến các
thành phần khác
• Dễ dàng phát triển và bảo trì ứng dụng
IV.3.1 
Là thể hiện của một cấu trúc dữ liệu cơ bản. Model được sử dụng để lưu trữ dữ liệu và các
quy tắc business liên quan.
Model đại diện cho một đối tượng dữ liệu duy nhất. Nó có thể là một “row” trong database
table hoặc là một form input của người dùng. Mỗi trường (field) của object là một thuộc
tính (attribute) của model.
IV.3.2 
View chủ yếu là các yếu tố giao diện người dùng. Chịu trách nhiệm trình bày các thể hiện

của model ở dạng mà người dùng mong muốn. Nó có thể chứa các câu lệnh (PHP, ASP, …)
nhưng ch‹ với mục đích trình bày.
Tãn taïc giaí åí âáy, LÅÏP XXX 11
Tãn âãö taìi åí âáy 12
IV.3.3 
Công việc chủ yếu của controller là điều khiển, xử lý các request của người dùng. Liên kết
model với view. Kiểm soát các response.
IV.4 Mô hình phát triển MVC tốt
Figure 3: Mô hình Bad và Good cake
Một mô hình MVC tốt thì cần phải thực hiện đúng các nguyên tắc sau:
IV.4.1 
• Nên
o Chứa các thuộc tính đại diện cho các dữ liệu cụ thể
o Chứa các business logic nhằm đảm bảo các dữ liệu đáp ứng được yêu cầu thiết
kế
o Có thể chứa các mã thao tác với database
• Tránh
o Sử dụng $_GET, $_POST hoặc các biến trực tiếp gắn liến với request của
người dùng
o Nhúng các mã HTML hoặc các mã trình diễn khác (echo, …)
IV.4.2 
• Nên
o Chứa các mã trình diễn, như HTML, PHP, ASP,… đơn giản để thể hiện, định
dạng dữ liệu
o Có thể truy cập các thuộc tính (property) và phương thức (method) của
controller và model nhưng ch‹ với mục đích trình bày
• Tránh
o Chứa các mã truy vấn dữ liệu
Tãn taïc giaí åí âáy, LÅÏP XXX 12















Tãn âãö taìi åí âáy 13
o Truy cập trực tiếp đến $_GET, $_POST, hoặc các biến tương tự khác đại diện
cho request của người dùng
IV.4.3 
• Nên
o Có thể truy cập $_GET, $_POST và các biến tương tự khác đại diện cho
request của người dùng
o Có thể tạo ra các thực thể (instance) của model
• Tránh
o Chứa các câu lệnh truy vấn SQL
o Chứa bất kỳ mã HTML hoặc các ngôn ngữ trình diễn khác
IV.5 So sánh giữa CakePHP và Yii
Figure 4: Cakephp và Yii Framework
CakePHP được đánh giá là framework có mô hình MVC chuẩn nhất, cơ bản nhất. Các thành
phần của CakePHP hoàn toàn tương ứng với mô hình MVC.
Yii cũng sử dụng mô hình MVC trong thiết kế. Ngoài các thành phần cơ bản, Yii bổ sung
thêm một số thành phần (Application, App Components, Widget).

Tãn taïc giaí åí âáy, LÅÏP XXX 13

Tãn âãö taìi åí âáy 14
IV.6 Mô hình làm việc của Yii
Figure 5: Yii basic workflow
Về cơ bản, cách làm việc của Yii được thực hiện qua các bước sau:
1. Yêu cầu (request) của người dùng được trình duyệt gửi cho Web server. Web server
chuyển tiếp request cho index.php xử lý. Index.php có chức năng tạo một thực thể
Application và thực thi nó
2. Application tạo ra các App Component (App Component là các thành phần của ứng
dụng, vd: UrlManager, HttpRequest)
3. App Component gửi các thành phần của mình cho Application quản lý
4. Application xác định các controller và action từ request và gửi chúng cho
UrlManager quản lý. Tiếp đến Application tiến hành thực thi controller
5. Controller có thể tạo ra các model để xử lý dữ liệu
6. Model gửi dữ liệu cho Controller
7. Controller gửi các biến, các thể hiện của model cho View
8. View tạo ra các Widget
9. View thực hiện trình bày trang web
Đôi khi chúng ta cần thay đổi workflow để tùy biến trang web. Yii cho phép chúng ta làm
được điều này qua workflow sau:
Tãn taïc giaí åí âáy, LÅÏP XXX 14
Tãn âãö taìi åí âáy 15
Figure 6: Yii advanced workflow
Tãn taïc giaí åí âáy, LÅÏP XXX 15


Tãn âãö taìi åí âáy 16
IV.7 Các thành phần của Yii
Các thành phần chính của Yii bao gồm:

1. Application
2. Controller
3. Component
4. Model
5. View
6. Widget
IV.7.1  
Nhiệm vụ chính của Application là để giải quyết các request của người dùng. Gửi chúng
cho controller thích hợp để tiếp tục xử lý. Application là trung tâm quản lý toàn bộ cấu hình
của ứng dụng.
Các công việc chủ yếu của Application là:
 Chuẩn bị khởi tạo Application (Pre-initializes the application)
 Thiết lập autoloader và điều khiển error (Set up class autoloader and error handling)
 Đăng ký các App Component côt lõi (Register core application components)
 Nạp cấu hình ứng dụng (Load application configuration)
 Khởi tạo Application (Initialize the application)
 Raise onBeginRequest event
 Xử lý request của người dùng (Process the user request)
 Giải quyết request của người dùng (Resolve the user request)
 Tạo và thực thi Controller (Create & Run controller)
 Raise onEndRequest event
Để cấu hình Application ta sử dụng file (hoặc array) để khởi tạo giá trị của các thuộc tính.
File cấu hình được chứa trong thư mục protected/config/main.php của ứng dụng. Cấu trúc
như sau:
Tãn taïc giaí åí âáy, LÅÏP XXX 16
Tãn âãö taìi åí âáy 17
Figure 7: Cấu trúc file main.php
IV.7.2 
Nhiệm vụ chủ yếu của controller là thực thi action. Controller của Yii gồm có 2 thành phần
cơ bản là Filter và Action.

IV.7.3 
Action là các phương thức có tên bắt đầu là action (ví dụ: actionIndex). Về cơ bản, cách sử
dụng action của Yii tương tự như CakePHP.
Figure 8: Action trong cakephp và yii framework
Ngoài ra, Yii còn hỗ trợ cách viết các action nâng cao hơn bằng cách tổ chức các action theo
kiểu mô-đun hóa. Ta có thể xem cấu trúc thư mục sau:
Tãn taïc giaí åí âáy, LÅÏP XXX 17
 
return array!
"
##$%#&'(#)
#*+#$%##)
"
##$%array!
#,#$%array!#-#$%#./ $0,$,#1)
1)
"
1
class-extends
2
publicfuncon!1
2

3

publicfuncon!1
2

3
3

Tãn âãö taìi åí âáy 18
Figure 9: Tổ chức action theo kiểu modun hóa
protected/controllers/SiteController.php protected/controllers/site/ContactAction.php
Một số phương thức tương đương giữa CakePHP và Yii
Figure 10: Một số phương thức tương đương của cakphp và yii framework
Tãn taïc giaí åí âáy, LÅÏP XXX 18
class-extends
2

publicfuncon!1
2
returnarray!
##$%##)
10
3

3
class-extends
2
publicfuncon,*'!1
2

3

publicfuncon4'!1
2

3
3
Tãn âãö taìi åí âáy 19

Figure 11: Một số phương thức tương đương của cakphp và yii framework
IV.7.4 !
Là phương thức được xử lý trước (hoặc sau) khi thực thi action. Trong Yii, một action có
thể có nhiều filter. Filter có thể ngăn chặn việc thực thi các action.
Để khai báo filter ta sử dụng phương thức filters(). Xem ví dụ:
Figure 12: Filter
Tại ví dụ trên, ta tạo một filter AccessControl cho toàn bộ các action thuộc controller Post.
Phương thức filterAccessControl sẽ được thực thi trước các action của controller Post.
Tãn taïc giaí åí âáy, LÅÏP XXX 19
class-extends
2
publicfuncon,*5!1
2

3

publicfuncon45!1
2

3
3
class6extends
2
publicfuncon!1
2
return array !
78)
10
3
public funcon !91

2
:
9:%+!10
:
3
3
Tãn âãö taìi åí âáy 20
Ngoài ra, ta có thể tùy biến sử dụng filter bằng cách sử dụng toán tử cộng (+) và trừ (-).
Toán tử (+) cho phép filter đó được áp dụng đối với controller kèm theo. Toán tử (-) cho
phép filter đó được áp dụng cho tất cả các action ngoại trừ action kèm theo. Xem ví dụ:
Figure 13: Filter
Ví dụ trên cho thấy, filter CheckAdmin sẽ được áp dụng cho 2 action update và delete.
Filter CheckLogin sẽ được áp dụng cho tất cả các action của controller Post ngoại trừ action
view.
Ngoài ra, Yii còn hỗ trợ cách viết các filter nâng cao hơn bằng cách tổ chức các filter theo
kiểu mô-đun hóa. (tương tự phần action). Xem ví dụ:
Tãn taïc giaí åí âáy, LÅÏP XXX 20
class6extends
2
publicfuncon!1
2
return array !
7(;+)8)
7(<:=8)
10
3
public funcon (!91
2
if!12
9:%+!10

3else2
780
3
3
3
Tãn âãö taìi åí âáy 21
Figure 14: Filter
protected/controllers/PostContrller.php protected/filters/PerformanceFilter.php
IV.7.5 "
Ứng dụng Yii được xây dựng dựa trên các Component. Sử dụng các Component chủ yếu
liên quan đến việc truy cập các thuộc tính của nó và nâng cao xử lý sự kiện. Component là
đối tượng quản lý Event và Behavior.
IV.7.6 #$
Yii hỗ trợ kỹ thuật lập trình hướng sự kiện. Các phương thức được gán trong một sự kiện sẽ
được tự động thực thi mỗi khi sự kiện được gọi (raise)
IV.7.7 
Nhiệm vụ chính của model là lưu dữ liệu và các quy tắc business liên quan.
Model đại diện cho một đối tượng dữ liệu duy nhất. Nó có thể là một hàng (row) trong bảng
(table) cơ sở dữ liệu hoặc là một input form của người dùng.
Mỗi trường (field) của đối tượng được biểu diễn thành một thuộc tính (property) trong
model. Thuộc tính này có một nhãn (label) và có thể được xác lập một quy tắc xác thực
(validate).
Yii hỗ trợ 2 loại model
• FormModel: sử dụng cho việc xử lý các form input của người dùng. Các dữ liệu này
thường được xử lý và sau đó bỏ đi. Ví dụ: trên một trang đăng nhập, ta ch‹ sử dụng
model cho việc kiểm tra user.
• ActiveRecord: sử dụng cho việc truy cập cơ sở dữ liệu trừu tượng.
Tãn taïc giaí åí âáy, LÅÏP XXX 21
 6*'
class6*'extends'

2
protectedfuncon'!91
2
,,*
+
returntrue0**+
,+
3

protectedfuncon'!91
2
,4
+
3
3
Tãn âãö taìi åí âáy 22
IV.8 Các làm việc với model
Để làm việc với model, ta cần chú ý đến các vấn đề sau:
a) Các quy tắc xác thực (Validation Rules)
b) Relational Active Record
c) Một vài phương thức liên quan đến truy vấn CSDL
IV.8.1 %&'()*%+
Để khai báo quy tắc xác thực, trong model ta sử dụng phương thức rules() trả về một array
chức các quy tắc. Xem ví dụ:
Figure 15: Rules
Với ví dụ trên, ta khai báo quy tắc &' cho 2 thuộc tính ' ",   (quy tắc
này yêu cầu người dùng phải nhập liệu cho 2 thuộc tính, không được phép để trống). Ngoài
ra, thuộc tính   còn được khai báo quy tắc '  (quy tắc này sẽ thực thi
phương thức authenticate để kiểm tra password có đúng không).
Có 3 loại quy tắc xác thực (Validator) sau:

1. Validator có thể là tên của một phương thức trong model (như ví dụ trên, sử dụng
phương thức ' )
2. Validator có thể là tên của một lớp (class) validator
3. Validator có thể là một bí danh được xác định trước của Yii (như ví dụ trên, sử dụng
bí danh &')
IV.8.2 ,$-./0&' 12'($345
• Protected Methods
o beforeSave() / afterSave()
o beforeDelete() / afterDelete()
o beforeValidate() / afterValidate()
Tãn taïc giaí åí âáy, LÅÏP XXX 22
class<'extends'
2
public9+0
public90
publicfuncon+!1
2
returnarray!
array!#+)#)#/+#1)
array!##)#+#1)
10
3
publicfuncon+!9>,+)91
2
3
3
Tãn âãö taìi åí âáy 23
o beforeFind() / afterFind()
• Events
o onBeforeSave / onAfterSave

o onBeforeDelete / onAfterDelete
o onBeforeValidate / onAfterValidate
o onBeforeFind / onAfterFind
IV.9 View
View là một PHP script bao gồm chủ yếu là các yếu tố giao diện người dùng. Nó có thể
chứa các câu lệnh PHP đơn giản nhưng ch‹ với mục đích trình bày.
Làm việc với view cần chú ý đến các phương thức sau:
• Public methods
o render(): Renders a view with a layout
o renderDynamic(): Renders dynamic content returned by the specified callback
o renderDynamicInternal(): This method is internally used
o renderFile() or renderInternal(): Renders a view file
o renderPartial(): Renders a view
o renderText(): Renders a static text string
• Protected methods
o beforeRender() / afterRender()
IV.10 Widget
Widget là thành phần chủ yếu cho mục đích trình bày. Nó tạo ra các giao diện người dùng
phức tạp nhưng khép kín.
Tãn taïc giaí åí âáy, LÅÏP XXX 23
Tãn âãö taìi åí âáy 24
IV.11 Các làm việc với database
1. Data Access Objects (DAO)
2. Query Builder
3. Active Record
IV.11.1 5  678956:
DAO cung cấp một API chung để truy cập dữ liệu được lưu trữ trong hệ thống quản lý
CSDL khác nhau.
Yii DAO chủ yếu bao gồm 4 lớp (class) sau:
• CDbConnection: đại diện cho một kết nối đến CSDL

• CDbCommand: đại diện cho một câu lệnh truy vấn SQL để thực hiện trên CSDL
• CDbDataReader: đại diện cho một tập hợp các hàng (row) từ kết quả câu truy vấn
• CdbTransaction: đại diện cho một giao dịch (transaction) với DB
i. Establishing Database Connection (Thiết lập kết nối CSDL)
Để thiết lập kết nối với CSDL ta tạo đối tượng CdbConnection với cấu trúc như sau:
$connection=new CDbConnection($dsn,$username,$password);
// establish connection. You may try catch possible
exceptions
$connection->active=true;

$connection->active=false; // close connection
; tùy thuộc vào trình điều khiển CSDL PDO sử dụng. Dưới đây là danh sách các DSN
thường được sử dụng:
• SQLite: sqlite:/path/to/dbfile
• MySQL: mysql:host=localhost;dbname=testdb
• PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb
• SQL Server: mssql:host=localhost;dbname=testdb
• Oracle: oci:dbname=//localhost:1521/testdb
;' " và ;  là các thông tin để kết nối đến CSDL.
Ta có thể thiết lập kết nối CSDL trong file config (protected/config/main.php) như sau:
array(

Tãn taïc giaí åí âáy, LÅÏP XXX 24
Tãn âãö taìi åí âáy 25
'components'=>array(

'db'=>array(
'class'=>'CDbConnection',

'connectionString'=>'mysql:host=localhost;dbname=testdb',

'username'=>'root',
'password'=>'password',
'emulatePrepare'=>true, // needed by some MySQL
installations
),
),
)
Với cách cấu hình như?)@ể truy cập đến DB connection ta sử dụng < 9:=>7.
ii. Executing SQL Statements (Thực thi câu lệnh truy vấn SQL)
Khi một kết nối CSDL đã được thiết lập, các câu lệnh truy SQL có thể được thực hiện bằng
cách sử dụng CDbCommand. Để tạo ra CDbCommand ta sử dụng phương thức
57 "" (). Xem ví dụ:
$rowCount=$command->execute();// execute the non-query SQL
$dataReader=$command->query();// execute a query SQL
$rows=$command->queryAll();// query and return all rows of
result
$row=$command->queryRow();// query and return the first row
of result
$column=$command->queryColumn();// query and return the first
column of result
$value=$command->queryScalar();// query and return the first
field in the first row
Một câu lệnh SQL được thực thi thông qua CDbCommand bằng một trong 2 cách sau:
• execute(): thực hiện non-query SQL, như INSERT, UPDATE và DELETE
• query(): thực hiện câu truy vấn trả về tập hợp các hàng (row) dữ liệu, như SELECT
iii. Fetching Query Results (Lấy kết quả truy vấn)
Để lấy kết quả truy vấn ta sử dụng 75  ? => ()
$dataReader=$command->query();
// calling read() repeatedly until it returns false
while(($row=$dataReader->read())!==false) { }

Tãn taïc giaí åí âáy, LÅÏP XXX 25

×