1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ án tốt nghiệp Codeigniter Framework(Lập trình Web)

122 2,9K 8

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 122
Dung lượng 3,9 MB

Nội dung

Đây là Báo cáo đồ án tốt nghiệp "Tìm hiểu về framework php Codeigniter" một cách chi tiết nhất. Đây là đồ án cá nhân của mình, hôm nay up lên chia sẻ với mọi người.

Trang 1

MỤC LỤC

CHƯƠNG 1 9

MỞ ĐẦU 9

1.1 Lý do chọn framework để phát triển ứng dụng website 9

1.2 Một số PHP Framework phổ biến hiện nay 11

1.2.1 CodeIgniter 11

1.2.2 Zend Framework 12

1.2.3 Yii Framework 13

1.2.4 CakePHP 13

1.2.5 Symfony 14

1.2.6 Prado 15

1.3 Lựa chọn PHP framework phù hợp 15

1.4 Bố cục của đồ án 16

1.5 Mục tiêu 16

CHƯƠNG 2 17

CÁC THÀNH PHẦN CỦA CODEIGNITER 17

2.1 Tổng quan về CodeIgniter 17

2.1.1 Những điểm nổi bật 17

2.1.1.1 Được thiết kế theo mô hình MVC (Model – View – Controller): 17

2.1.1.2 Tốc độ: 17

2.1.1.3 Nhẹ gọn: 17

2.1.1.4 Dễ sử dụng: 17

2.1.1.5 Thư viện phong phú: 18

2.1.1.6 Miễn phí: 18

2.1.1.7 Bảo Mật: 18

2.1.1.8 Search Engine Optimization: 18

2.1.2 Những điểm hạn chế 18

2.1.2.1 Chưa hổ trợ AJAX: 18

2.1.2.2 Chưa hổ trợ ORM: 18

2.1.2.3 Chưa hổ trợ Event-Driven Programming: 19

2.1.2.4 Chưa hổ trợ một số module thông dụng: 19

Trang 2

2.1.3 Cấu trúc thư mục của CodeIgniter 19

2.1.4 Hoạt động của CodeIgniter 22

2.1.5 CodeIgniter URLs 22

2.1.6 Định tuyến URI (URI Routing) 24

2.1.7 Model 25

2.1.8 View 29

2.1.9 Controller 31

2.1.10 Chức năng Helper 34

2.1.11 Thư viện của CodeIgniter 35

2.1.11.1 Định nghĩa một thư viện mới 37

2.1.11.2 Thay thế một thư viện 38

2.1.11.3 Mở rộng một thư viện 38

2.2 Những thƣ viện chính 38

2.2.1 Thư viện Calendar 38

2.2.2 Thư viện Shopping Cart 42

2.2.3 Thư viện Email 48

2.2.4 Thư viện Form Validation 53

2.2.4.1 Thiết lập điều kiện kiểm tra 53

2.2.4.2 Xử lý lỗi 58

2.2.4.3 Các tiện ích của Form Validation 59

2.2.5 Thư viện Pagination 60

2.2.5.1 Tạo phân trang 60

2.2.5.2 Thiết lập cấu hình trong một tập tin 61

2.2.5.3 Tùy chọn trong Pagination 61

2.2.6 Thư viện Session 62

2.2.6.1 Cách thức hoạt động 62

2.2.6.2 Cài đặt 63

2.2.6.3 Thêm thông tin vào session 63

2.2.6.4 Xóa thông tin trong session 63

2.2.6.5 Xóa tất cả session 63

2.2.6.6 Lấy thông tin trong session 64

Trang 3

2.2.6.7 Lưu session vào cơ sở dữ liệu 64

2.2.6.8 Thiết lập các tùy chọn 65

2.2.7 Thư viện Database 66

2.2.7.1 thiết lập thông tin cơ sở dữ liệu 66

2.2.7.2 Truy vấn cơ sở dữ liệu 67

2.2.7.3 Active Record 69

CHƯƠNG 3 75

CÁC KỸ THUẬT ÁP DỤNG ĐỂ XÂY DỰNG ỨNG DỤNG 75

3.1 Session 75

3.1.1 Lưu thông tin người dùng 75

3.1.2 So sánh hai sản phẩm 76

3.2 Phân trang 78

3.3 Xây dựng giỏ hàng 80

3.4 Gửi mail 81

3.5 Xử lý các lỗi không tìm thấy 82

CHƯƠNG 4 87

ỨNG DỤNG MINH HỌA 87

4.1 Thiết kế cơ sở dữ liệu 87

4.2 Kiến trúc ứng dụng 95

4.2.1 Models 95

4.2.2 Controller 96

4.2.3 Views 96

4.3 Sơ đồ Use case 97

4.3.1 Sơ đồ Use case của người dùng và thành viên 97

4.3.2 Sơ đồ Use case của Admin 98

4.4 Danh mục các chức năng của ứng dụng 99

4.4.1 Người dùng 99

4.4.2 Thành viên 104

4.4.3 Quản lý Admin 108

CHƯƠNG 5 119

KẾT LUẬN 119

Trang 4

5.1 Đánh giá 119

5.1.1 Về lý thuyết 119

5.1.2 Về ứng dụng 119

5.2 Hướng phát triển và mở rộng của đồ án 120

5.2.1 Về lý thuyết 120

5.2.2 Về ứng dụng 121

5.3 Lời kết 121

Trang 5

DANH MỤC TỪ VIẾT TẮT

 HTTP……… Hypertext Transfer Protocol

 MVC……… Model – View - Controller

 ORM……… Object-Relational Mapping

 PHP……….……… PHP Hypertext Preprocessor

 SQL……… Structured Query Language

 URI……… Uniform Resource Identifier

 URL……… Uniform Resource Location

 XML……… Extensible Markup Language

Trang 6

DANH MỤC CÁC BẢNG

Bảng 2-1 Danh sách thư viện của CodeIgniter 35

Bảng 2-2 Bảng thiết lập giá trị của thư viện Calendar 40

Bảng 2-3 Bảng thiết lập giá trị của thư viện Email 49

Bảng 2-4 Bảng thiết lập giá trị của thư viện Form Validation 54

Bảng 2-5 Bảng các hàm xử lý trong thư viện Form Validation 55

Bảng 2-6 Bảng thiết lập giá trị trong thư viện Session 65

Bảng 2-7 Bảng thiết lập cấu hình trong tập tin database.php 66

Bảng 4-1 sản phẩm ( ci_sanpham ) 88

Bảng 4-2 Đánh giá sản phẩm (ci_danhgia ) 89

Bảng 4-3 Nhà sản xuất ( ci_hang ) 89

Bảng 4-4 loại sảm phẩm ( ci_loai ) 89

Bảng 4-5 tài khoản Admin ( ci_admin ) 89

Bảng 4-6 tài khoản thành viên ( ci_member ) 90

Bảng 4-7 quản lý website ( ci_website ) 90

Bảng 4-8 tỉnh/thành phố (ci_tinhtp ) 91

Bảng 4-9 hóa đơn ( ci_hoadon ) 91

Bảng 4-10 chi tiết hóa đơn (ci_chitiet_hoadon ) 91

Bảng 4-11 thông tin hóa đơn ( ci_guest ) 91

Bảng 4-12 tin tức ( ci_bantin ) 92

Bảng 4-13 khuyến mãi ( ci_khuyenmai ) 92

Bảng 4-14 quản lý quảng cáo ( ci_quangcao ) 93

Bảng 4-15 quản lý slideshow ( ci_slideshow ) 93

Bảng 4-16 loại linh kiện và giá ( ci_timkiem ) 93

Bảng 4-17 danh sách linh kiện và giá ( ci_giatri_tk ) 93

Bảng 4-18 Session ( ci_sessions ) 93

Bảng 4-19 danh sách tài khoản mail website (ci_send_mail ) 94

Bảng 4-20 danh sách ứng dụng mail của website ( ci_ungdung_mail ) 94

Bảng 4-21 danh sách mail của người dùng ( ci_nhanmail ) 94

Bảng 4-22 quản lý liên hệ trực tuyến ( ci_lienhe_online ) 94

Bảng 4-23 danh sách thư liên hệ ( ci_lienhe_offline ) 95

Trang 7

DANH MỤC CÁC HÌNH

Hình 1-1 Mô hình MVC 10

Hình 1-2 CodeIgniter Framework 11

Hình 1-3 Zend Framework 12

Hình 1-4 Yii Framework 13

Hình 1-5 CakePHP Framework 13

Hình 1-6 Symfony Framework 14

Hình 1-7 Prado Framework 15

Hình 2-1 Cấu trúc của CodeIgniter 19

Hình 2-2 Dòng chảy dữ liệu trong CodeIgniter 22

Hình 2-3 Lịch bắt đầu vào ngày thứ bảy 40

Hình 2-4 Lịch dạng đầy đủ 41

Hình 3-1 Sơ đồ hoạt động quá trình đăng nhập của người dùng 75

Hình 3-2 Quá trình hoạt động của so sánh 2 sản phầm 77

Hình 3-3 Mô tả phân trang 78

Hình 3-4 Quán trình thêm sản phẩm vào giỏ hàng 80

Hình 4-1 Lược đồ cơ sở dữ liệu 87

Hình 4-2 Sơ đồ kiến trúc Models của ứng dụng 95

Hình 4-3 Sơ đồ kiến trúc Controllers của ứng dụng 96

Hình 4-4 Sơ đồ kiến trúc Views của ứng dụng 96

Hình 4-5 Sơ đồ Use Case của người dùng và thành viên 97

Hình 4-6 Sơ đồ Use Case của Admin 98

Hình 4-7 Danh sách nhà sản xuất và số sản phẩm của nhà sản xuất đó 99

Hình 4-8 Danh sách sản phẩm mới nhất 99

Hình 4-9 Chi tiết sản phẩm 100

Hình 4-10 Đánh giá sản phẩm 100

Hình 4-11 Nhận thông tin mới nhất qua mail 101

Hình 4-12 Form liên hệ 101

Hình 4-13 Tìm kiếm nâng cao 101

Hình 4-14 So sánh 2 sản phẩm 102

Hình 4-15 Thông tin giỏ hàng 103

Hình 4-16 Form đăng ký 103

Hình 4-17 Form lấy mật khẩu mới 103

Hình 4-18 Thông tin cá nhân và lịch sử giao dịch 104

Hình 4-19 Form cập nhật thông tin cá nhân 104

Hình 4-20 Form cập nhật mật khẩu 105

Hình 4-21 Form điền thông tin mua hàng 105

Hình 4-22 Hóa đơn mua hàng 106

Hình 4-23 In hóa đơn mua hàng 107

Hình 4-24 Form đăng nhập của Admin 108

Trang 8

Hình 4-25 Giao diện quản lý của Admin 108

Hình 4-26 Quản lý doanh thu 109

Hình 4-27 Quản lý sản phẩm bán ra (chưa làm ) 109

Hình 4-28 Quản lý danh sách nhà sản xuất 110

Hình 4-29 Thêm nhà sản xuất 110

Hình 4-30 Quản lý sản phẩm 110

Hình 4-31 Thêm sản phẩm 111

Hình 4-32 Quản lý hóa đơn chưa thanh toán 111

Hình 4-33 Quản lý hóa đơn đã thanh toán 111

Hình 4-34 Quản lý hóa đơn chưa được kích hoạt 112

Hình 4-35 Quản lý thành viên 112

Hình 4-36 Thêm thành viên 112

Hình 4-37 Danh sách thành viên bị khóa 113

Hình 4-38 Quản lý liên hệ do khách hàng gửi 113

Hình 4-39 Chi tiết liên hệ của khách hàng và trả lời thư 113

Hình 4-40 Quản lý tin tức 114

Hình 4-41 Thêm tin tức 114

Hình 4-42 Quản lý tin tức khuyến mãi 114

Hình 4-43 Thêm tin tức khuyến mãi 115

Hình 4-44 Quản lý linh kiện 115

Hình 4-45 Chi tiết linh kiện 115

Hình 4-46 Quản lý cấu hình website 116

Hình 4-47 Quản lý tài khoản mail của website 116

Hình 4-48 Thêm tài khoản mail cho website 116

Hình 4-49 Quản lý ứng dụng gửi mail 116

Hình 4-50 Quản lý Slideshow 117

Hình 4-51 Quản lý quảng cáo 117

Hình 4-52 Quản lý liên hệ trực tuyến 117

Hình 4-53 Thêm liên hệ trực tuyến 118

Hình 4-54 Quản lý danh sách mail nhận thông tin mới nhất từ website 118

Hình 4-55 Form soạn thư để gửi đến danh sách mail đăng ký nhận thông tin 118

Trang 9

CHƯƠNG 1

MỞ ĐẦU

 -  - 1.1 Lý do chọn framework để phát triển ứng dụng website

Có lẽ thuật ngữ Framework không còn xa lạ gì đối với những người đã từng học PHP, tuy nhiên vẫn có rất nhiều người không hiểu nó là cái gì, nó có gì và làm được những gì… Và tại sao phần lớn các lập trình viên lựa chọn PHP Framework làm ngôn ngữ lập trình ứng dụng web

Như chúng ta đã biết, PHP (viết tắt hồi quy của PHP Hypertext Preprocessor) là một ngôn ngữ script rất phổ biến hiện nay bởi những lý do: mã nguồn mở, linh hoạt, công cụ mạnh mẽ, dễ học, dễ sử dụng và hoàn toàn miễn phí Lập trình viên có thể sử dụng PHP để tạo ra các trang web tin tức, giải trí, giáo dục, thương mai điện tử…Tuy nhiên mã PHP mà lập trình viên tạo ra sẽ trở nên đơn điệu, lủng củng, trùng lặp, đôi khi còn tạo ra các lỗ hổng cho website Đó là lúc lập trình viên cần đến PHP Framework

Nói một cách dễ hiểu Framework là một thư viện, bộ khung chứa sẵn các

“vật liệu” ở nhiều lĩnh vực khác nhau, lập trình viên chỉ việc gọi ra sử dụng mà không cần mất nhiều thời gian để tự thiết kế trước khi dùng Ví dụ để thiết kế một trò chơi đua xe, nếu không có bộ Framework chuyên dụng cho game thì người lập trình game phải tạo ra khung xe, bánh xe, người lái, đường đi… Sau đó mới tính đến chuyện ghép chúng lại với nhau để tạo ra không gian cho game Nếu có sẵn bộ Framework thì lập trình viên chỉ viết lệnh lấy chúng từ Framework và ghép chúng lại Có thể hình dung Framework bao gồm các vật liệu như gạch, cát, đá, xi măng, nước, sắt… Nhưng tùy theo cách thiết kế của người kiến trúc sư mà tạo ra được những căn nhà, trường học có hình dạng, kích thước khác nhau Từ ví dụ trên có thể thấy Framework là một thư viện dựng sẵn, chứa nhiều tập tin giúp lập trình có thể tạo ra các ứng dụng khác nhau bằng cách lấy ra sử dụng mà không cần định nghĩa lại

PHP framework làm cho sự phát triển của các ứng dụng web viết bằng PHP trở nên trôi chảy, ngắn gọn, mạnh mẽ và bảo mật hơn bằng cách cung cấp một cấu trúc cơ bản để xây dựng những ứng dụng đó Hay nói cách khác PHP framework

Trang 10

cung cấp các tiện ích, thư viện, các đoạn mã dựng sẵn giúp lập trình viên tiết kiệm được thời gian, tăng sự ổn định cho ứng dụng, tối ưu và giảm thiểu sự lặp đi lặp lại các đoạn mã Ngoài ra PHP framework có thể tương tác chính xác với cơ sở dữ liệu (Database) và tách phần mã PHP ra khỏi giao diện giúp ứng dụng ổn định hơn và dễ quản lý hơn Điều này cho phép lập trình viên dành nhiều thời gian để tạo ra các ứng dụng web hơn là phí thời gian để viết các đoạn mã lặp lại trong một ứng dụng viết bằng PHP thuần

PHP framework được thiết kế theo một mô hình chuẩn để lập trình viên có thể dễ dàng sử dụng, quản lý và bảo trì ứng dụng Đa số các frameword hiện nay đều chọn MVC làm mô hình thiết kế ứng dụng MVC là viết tắt của Model View Controller cho phép tách biệt các mã nghiệp vụ (bussiness logic) và giao diện thành các phần riêng biệt, điều này đồng nghĩa với việc ta có thể chỉnh sửa chúng một cách riêng lẻ Mô hình MVC gồm ba thành phần: Model, View và Controller

Hình 1-1 Mô hình MVC

Trong đó:

Model (Tầng dữ liệu): là một đối tượng hoặc một tập hợp đối tượng biểu diễn cho phần dữ liệu của ứng dụng Model có nhiệm vụ tương tác đến dữ liệu trong

cơ sở dữ liệu, thường là các thao tác thay đổi dữ liệu như thêm, xóa, sửa, truy vấn

dữ liệu… Nếu dữ liệu trong Model thay đổi thì ngoài View sẽ được cập nhật lại

View (Tầng giao diện): là thành phần thể hiện dữ liệu trong Model thành các giao diện tương tác với người dùng View cung cấp các menu, nút bấm, hộp đối thoại,chọn lựa, các checkbox… để người dùng có thể thêm, xóa, sửa, truy xuất hay

Trang 11

tìm kiếm dữ liệu trong hệ thống Thông thường các thông tin hiển thị trên View được lấy từ Model

Controller (Tầng điều khiển): đóng vai trò trung gian giữa Model và View, là tầng chịu trách nhiệm xử lý các tác động từ giao diện View Sau khi xử lý các yêu cầu được gửi từ người dùng Controller sẽ tương tác đến Model để lấy các dữ liệu cần thiết để đáp ứng các yêu cầu vừa được gửi Cuối cùng Controller trả dữ liệu này

về cho View

Về căn bản MVC chi nhỏ quá trình xử lý của một ứng dụng, vì thế bạn có thể làm việc trên từng phần riêng lẻ, trong khi những thành phần khác sẽ không bị ảnh hưởng tới Thực chất điều này giúp lập trình viên lập trình PHP nhanh hơn, ít phức tạp hơn, dễ quản lý và bảo trì

1.2 Một số PHP Framework phổ biến hiện nay

Trong vài năm qua, PHP đã tiến triển thành một ngôn ngữ script được lựa chọn bởi hầu hết các nhà phát triển website, đã có sự bùng nổ về các PHP framework, dẫn đến các cuộc tranh luận lớn về đề tài: PHP framework nào tốt nhất, bởi vì thực tế không phải tất cả các framework đều được xây dựng trên khuôn khổ dành cho người sử dụng Dưới đây là một số PHP framework được đánh giá là tốt

và phổ biến nhất hiện nay:

1.2.1 CodeIgniter

Hình 1-2 CodeIgniter Framework

Trang 12

CodeIgniter được biết đến như một framework dễ hiểu, dễ sử dụng, cho hiệu suất cao và được cộng đồng mạng đánh giá là framework có tốc độ xử lý dữ liệu nhanh nhất hiện nay PHP framework này phục vụ mục đích lý tưởng cho việc xây dựng các ứng dụng chia sẽ, lưu trữ Nó cung cấp các giải pháp đơn giản, có một thư viện video hướng dẫn phong phú, diễn đàn hỗ trợ và cung cấp sẵn một hướng dẫn đầy đủ, đơn giản cho người mới bắt đầu trong bộ cài đặt PHP framework này rất phù hợp cho người mới bắt đầu làm quen với framework

Hiện nay CodeIgniter có phiên bản mới nhất là 2.0.2, download tại website:

http://codeigniter.com/ Dung lượng: 2.15 mb

Trang 13

1.2.3 Yii Framework

Hình 1-4 Yii Framework

Yii là một PHP framework có hiệu suất cao cho việc phát triển ứng dụng web 2.0 Không chỉ là MVC framework mà Yii còn là một framework hướng component nên mức độ tái sử dụng giữa các dự án phát triển là rất cao Không chỉ vậy Yii còn có hiệu năng và tốc độ cao hơn Zend và Symfony…

Hiện nay Yii Framework có phiên bản mới nhất là 1.1.8, download tại website http://www.yiiframework.com/ Dung lượng là 2.50 mb

1.2.4 CakePHP

Hình 1-5 CakePHP Framework

Trang 14

CakePHP là một lựa chọn tuyệt vời cho những lập trình viên có kiến thức nâng cao về PHP Nó dựa trên cùng một nguyên tắc thiết kế với Ruby on Rails CakePHP là một framework mạnh về khía cạnh rapid development, giúp lập trình viên đẩy nhanh quá trình phát triển ứng dụng của họ Với các hệ thống hỗ trợ, tính đơn giản và môi trường mở cao đã giúp cho CakePHP trở thành một trong những framework phổ biến nhất hiện nay

Hiện nay cakePHP có phiên bản mới nhất là 1.3.10, download tại website

http://cakephp.org/ Dung lượng 1.42 mb

Trang 15

CodeIgniter là một framework hoàn toàn miễn phí, được thiết kế theo mô hình MVC giúp tách thành phần hiển thị giao diện và phần xử lý của một ứng dụng thành các phần riêng biệt, từ đó việc quản lý, bảo trì trở nên dễ dàng hơn Framework này hỗ trợ khá đầy đủ các tiện ích thông dụng cho phép phát triển các ứng dụng phổ biến nhất như gửi thư, quản lý session, giỏ hàng, xử lý ảnh, phân trang… Nhưng để có thể thấy rõ được các tính năng của CodeIgniter thì việc xây dựng một website thương mại điện tử là lựa chọn hợp lý nhất Vì hầu hết các ứng dụng website thương mại điện tử cần hội đủ các yếu tố giỏ hàng, session, gửi mail thanh toán, phân trang… Đặc biệt là phải có tốc độ xử lý thông tin nhanh

Trang 16

và xây dựng ứng dụng minh họa cho các chức năng của framework này

 Chương 2: Các thành phần của CodeIgniter

Nội dung chương 2 trình bày tổng quan về CodeIgniter Giới thiệu các thành phần có trong framework này và đi chi tiết vào các thành phần chính của CodeIgniter

 Chương 3: Các kỹ thuật áp dụng để xây dựng ứng dụng

Nội dung chương 3 trình bày chi tiết các kỹ thuật áp dụng để xây dựng ứng dụng như: session, phân trang, giỏ hàng, gửi mail…

 Chương 4: Xây dựng ứng dụng minh họa

Nội dung chương này trình bày các chức năng trong ứng dụng, phân hệ người dùng

Đề tài bao gồm các phần sau:

 Tìm hiểu các thư viện, helper, plugin của CodeIgniter và cách sử dụng

các thư viện, helper đó

 Tìm hiểu chi tiết những thư viện chính như: Shopping Cart, Form

Validation, Session, Email, Database, Pagination, Calendar

 Xây dựng ứng dụng website thương mại điện tử bằng CodeIgniter

framework

Trang 17

CHƯƠNG 2 CÁC THÀNH PHẦN CỦA CODEIGNITER

-  - 2.1 Tổng quan về CodeIgniter

CodeIgniter là một nền tảng ứng dụng web mã nguồn mở được viết bằng ngôn ngữ PHP bởi Rick Ellis (CEO của EllisLab, Inc) Phiên bản đầu tiên được phát hành vào ngày 28/02/2006, hiện tại CodeIgniter đã được nâng cấp lên phiên bản 2.0.2 phát hành vào ngày 07/04/2011 và đang được phát triển bởi ExpressionEngine Development Team thuộc EllisLab, Inc

2.1.1 Những điểm nổi bật

2.1.1.1 Được thiết kế theo mô hình MVC (Model – View – Controller):

Mô hình MVC giúp tách thành phần hiển thị giao diện và phần xử lý của một ứng dụng thành các phần riêng biệt, từ đó dễ quản lý, bảo trì và nâng cấp ứng dụng.CodeIgniter đã sử dụng mô hình này để tách các tập tin giao diện ra khỏi các tập tin xử lý dữ liệu để người thiết kế dễ dàng thay đổi giao diện, nâng cấp và bảo trì website

2.1.1.2 Tốc độ:

CodeIgniter là một trong những framework có tốc độ xử lý nhanh nhất hiện nay (nguon) Với cơ chế lưu nội dung người dùng truy xuất vào bộ đệm (cache), kiểm tra bộ đệm trước khi thực hiện, nếu tồn tại sẽ lấy ra ngược lại sẽ thực hiện gửi yêu cầu người dùng Như vậy sẽ làm giảm lượt truy cập đến cơ sở dữ liệu, tối ưu hóa tốc độ

2.1.1.3 Nhẹ gọn:

Phiên bản 2.02 ( có kèm hướng dẫn ) có dung lượng 2.15mb Nhẹ hơn rất nhiều so với các framework khác như Zend 6.02mb (bản chưa đầy đủ), Symfony 3.03mb…

2.1.1.4 Dễ sử dụng:

CodeIgniter khá thân thiện với người dùng, trong file download về có kèm theo một bản hướng dẫn khá đầy đủ và ví dụ minh họa về từng phần, giải thích chi tiết CodeIgniter rất phù hợp với người mới làm quen với lập trình

Trang 18

2.1.1.5 Thư viện phong phú:

CodeIgniter hỗ trợ khá đầy đủ các tiện ích thông dụng cho phép phát triển các ứng dụng phổ biến nhất như gửi thư, quản lý session, giỏ hàng, truy cập cơ sở

dữ liệu, xử lý ảnh … đến các chức năng bảo mật, mã hóa…

CodeIgniter hổ trợ bộ lọc XSS (Cross Site Scripting), SQL Injection để lọc

dữ liệu từ POST và COOKIE để ngăn chặn các mã độc Từ đó làm tăng khả năng

bảo mật cho CodeIgniter

2.1.1.8 Search Engine Optimization:

Cấu trúc URL được tạo bởi CodeIgniter rất đơn giản và thân thiện Thay vì

sử dụng các chuỗi truy vấn tiêu chuẩn tiếp cận đến các URL thì CodeIgniter sử

dụng một cách tiếp cận dựa vào các phân khúc (segment) Ví dụ:

2.1.2.2 Chưa hổ trợ ORM:

ORM là thuật ngữ viết tắt của Object-Relational Mapping là một phương pháp lập trình để chuyển đổi từ mô hình database (cơ sở dữ liệu) sang mô hình hướng đối tượng trong chương trình ORM giúp mã nguồn ngắn gọn hơn và các

Trang 19

thao tác trong cơ sở dữ liệu dễ dàng hơn Hiện nay CodeIgniter vẫn chưa hổ trợ ORM

2.1.2.3 Chưa hổ trợ Event-Driven Programming:

Event-Driven Programming (lập trình hướng sự kiện) là một mô hình lập trình trong đó các luồng xử lý của hệ thống được xác định bởi các sự kiện như nhấn chuột, gõ bàn phím… Tuy nhiên đây không phải là một khuyết điểm lớn đới với CodeIgniter vì hiện nay chỉ có một số framework hổ trợ Event-Driven Programming

như: Prado, Yii…

2.1.2.4 Chưa hổ trợ một số module thông dụng:

Tuy CodeIgniter là framework miễn phí, mã nguồn mở, dễ sử dụng nhưng vẫn còn thiếu một số module thông dụng thường gặp trong quá trình xây dựng ứng

dụng web như: Trình phân tích RSS, Trình xử lý PDF…

2.1.3 Cấu trúc thư mục của CodeIgniter

Hình 2-1 Cấu trúc của CodeIgniter

Trang 20

 Tập tin index.php (hàng thứ 2 từ dưới lên của hình 2) được xem là controller đầu vào tiếp nhận các yêu từ từ phía người dùng và gửi về hệ thống xử lý dữ liệu

 Thư mục user_guide: chứa các tập tin web hướng dẫn các sử dụng CodeIgniter Bao gồm các hướng dẫn cài đặt,cấu hình,cập nhật phiên bản mới, sử dụng các thư viện… Đối với một lập trình viên mới bắt đầu thì đây là cuốn sách thích hợp nhất

 Thư mục system: là thành phần cốt lõi của hệ thống, chứa các thư viện, tập tin ngôn ngữ, helpers, font…đã được dựng sẵn của CodeIgniter Lập trình viên chỉ cần gọi thư viện hay helper cần thiết ra sử dụng mà không cần phải định nghĩa lại

 Thư mục application: là nơi chứa các tập tin được lập trình cho ứng dụng bởi lập trình viên Trong đó có một số thư mục, tập tin quan trọng như:

 Thư mục cache: là bộ đệm của hệ thống,chứa các trang đã được xử lý trước

đó từ yêu cầu của người dùng nhằm giảm lượt truy cập đến cơ sở dữ liệu và tăng tốc

 Thư mục models: chứa các lớp model để tương tác với cơ sở dữ liệu

 Thư mục views: chứa các lớp view để hiển thị giao diện cho người sử dụng tương tác với ứng dụng

 Để tăng khả năng bảo mật cho ứng dụng lập trình viên có thể đưa thư mục application vào trong system mà không cần cấu hình lại Và thay đổi tên của thư mục application thành tên tùy ý Sau khi đổi tên,cần thiết lập lại tên mới cho biến

$application_folder trong tập tin index.php Thư mục system cũng có thể đổi tên tuy

Trang 21

ý và cũng phải thiết lập lại tên mới cho biến $system_path trong tập tin index.php Ngoài ra lập trình viên còn có thể tạo nhiều ứng dụng trong cùng một bộ cài đặt CodeIgniter bằng cách tạo ra các thư mục con bên trong thư mục application Các thư mục này phải có cấu trúc giống như thư mục application gốc

Ví dụ ta có hai ứng dụng web example1 và example2 Khi đó cấu trúc thư mục sẽ là:

Trang 22

2.1.4 Hoạt động của CodeIgniter

Hình 2-2 Dòng chảy dữ liệu trong CodeIgniter

 Tập tin index.php được xem là controller đầu vào, thiết lập các tài nguyên cần thiết để chạy ứng dụng CodeIgniter

 Routing: Routing có nhiệm vụ xem xét các yêu cầu HTTP và xác định hướng

xử lý với yêu cầu đó

 Caching: Nếu dữ liệu mà người dùng yêu cầu đã có lưu trong bộ đệm Caching thì CodeIgniter sẽ lấy dữ liệu này trả về cho người dùng mà không cần gửi yêu cầu nền về hệ thống và quá trình xử lý kết thúc

 Security: Nếu trong Caching không lưu dữ liệu mà người dùng yêu cầu thì dòng chảy sẽ chuyển đến Security Tại đây CodeIgniter sẽ lọc dữ liệu để phòng chống XXS hoặc SQL Injection Sau khi lọc, dữ liệu sẽ được chuyển đến Application Controller

 Application Controller: Tại đây Controller sẽ gọi các Models, Libraries, Helpers, Plugins, Scripts… có liên quan để xử lý dữ liệu đã nhận được

 View: Dữ liệu sau khi được xử lý sẽ được trả về View dưới dạng html để hiển thị cho người dùng Nếu chức năng Caching được bật lên thì dữ liệu này sẽ được lưu vào cache và sử dụng cho những yêu cầu tiếp theo

2.1.5 CodeIgniter URLs

Theo mặc định, URL trong CodeIgniter được thiết kế một cách tối ưu, dễ nhớ và thân thiện với người dùng Thay vì sử dụng các chuỗi truy vấn tiêu chuẩn truyền thống tiếp cận đến các URL thì CodeIgniter sử dụng một cách tiếp cận dựa vào các phân khúc (segment)

URI Segments: Các segment trong URL tiếp cận mô hình Model – View –

Controller có dạng như sau:

Trang 23

example.com/news/article/345

Các segment đầu tiên đại diện cho lớp controller cần gọi đến

Segment thứ hai là lớp hàm hay phương thức nằm trong lớp controller (segment 1) cần gọi

Segment thứ ba và các segment bổ sung phía sau đại diện cho các ID hoặc bất kỳ biến nào sử dụng cho hàm hay phương thức đó

Như vậy nếu URI example.com/news/article/345 sẽ có ý nghĩa: Gọi phương thức (hàm) article() thuộc lớp news và đối số truyền vào là 345

Loại bỏ chuỗi index.php trong URL: Theo mặc định chuỗi index.php sẽ được

thêm vào URL Để loại bỏ chuỗi này ta có thể sử dụng tập tin htaccess có nội dung như sau:

Options +FollowSymLinks All -Indexes

RewriteEngine On

RewriteCond $1 !^(index\.php|images|css|js|resource|publics|robots\.txt)

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Lưu ý: Để ứng dụng có thể chạy được trên server ảo khi có file htaccess lập trình viên cần cấu hình lại server ảo như sau:

Mở tập tin httpd.conf và tìm và thay thế dòng

#LoadModule rewrite_module modules/mod_rewrite.so

Thành

LoadModule rewrite_module modules/mod_rewrite.so

Thêm phần mở rộng vào URL: Lập trình viên có thể thêm HTML hay bất kỳ

hậu tố nào mà bạn thích vào cuối URL Thông thường các bộ máy tìm kiếm xó xu hướng thân thiện với các tập tin HTML Để có thể làm được điều này ta cần thay đổi giá trị cùa biến $config[„url_suffix‟] trong tập tin application/config/config.php

Ví dụ với $config[„url_suffix‟]=„.html‟; URL của ta sẽ có dạng như sau:

example.com/news/article/345.html

Lưu ý: Nếu lập trình viên muốn sử dụng truy vấn dạng chuỗi thì có thể vào kích hoạt tùy chỉnh như mô tả dưới đây

Trang 24

Cho phép truy vấn dạng chuỗi: Trong một số trường hợp,bạn có thể sử dụng

chuỗi truy vấn URL có dạng như sau:

2.1.6 Định tuyến URI (URI Routing)

Thông thường giữa một chuỗi URL và lớp controller/method có mối quan hệ một – một Các segment trong một URI có dạng:

Thiết lập quy tắc định tuyến URL: CodeIgniter cho phép lập trình viên có thể

thay đổi cơ chế xử lý URL mặc định thông qua chức năng định tuyến URI bằng cách thiết lập các quy luật trong tập tin application/config/routes.php Tập tin này chứa mảng $route , với khóa là URI do lập trình viên tự định nghĩa, giá trị là URI cũ dẫn đến phương thức trong controller có tồn tại Các quy luật trong routes.php được đọc từ trên xuống,quy luật nằm trên có độ ưu tiên cao hơn so với quy luật dưới

Trang 25

Ngoài ra CodeIgniter cho phép sử dụng các ký tự đại diện để thay thế CodeIgniter

đã quy định sẵn hai ký tự đại diện:

 (:num) tương ứng với các giá trị số

 :any tương ứng với bất kỳ giá trị nào

Ví dụ:

$route[„view_product/(:num)‟]=„product/view/$1‟;

Ý nghĩa: view_product/(:num) là do lập trình viên định nghĩa tùy ý, và truyền ID là một số Và khi gọi URL này CodeIgniter sẽ tự động gọi phương thức view của lớp product và với đối dố truyền vào là ID

Chú ý: Những route dành riêng của CodeIgniter phải để trên cùng so với các route do lập trình viên định nghĩa

2.1.7 Model

Model là những lớp php được thiết kế để thực hiện các thao tác trao đổi thông tin với cơ sở dữ liệu của hệ thống.Một lớp Model có thể chứa các chức năng thêm, xóa, cập nhật, truy vấn…Trong CodeIgniter việc khi báo các lớp model cho một đối tượng thực thể nào đó là không cần thiết, vì trong controller ta có thể gọi

Trang 26

đến thư viện database và thực hiện các thao tác đến cơ sở dữ liệu Tuy nhiên, để thuận tiện cho việc quản lý, chỉnh sửa, bảo trì, dễ dàng thiết kế, và đúng bản chất MVC nên CodeIgniter khuyến khích lập trình viên sử dụng các lớp model Sau đây

là một số ví dụ về các chức năng của một lớp model có thể làm:

class Blogmodel extends CI_Model {

Trang 27

Khi khai báo một lớp model, lập trình viên phải tuân thủ các quy tắc sau:

 Tên lớp phải được viết hoa chữ cái đầu tiên, phần còn lại viết thường Ví dụ: Blogmodel, User_codeigniter…

 Tên tập tin chứa các model trên phải trùng với tên lớp và được đặt trong thư mục application/models/ Các thư mục chứa các tập tin model có thể lồng vào nhau

để thuận tiện cho việc quản lý Ví dụ: application/models/blogmodel.php, application/models/admin/account.php, application/models/admin/manage.php

 Các lớp model phải thừa kế lớp Model Trong hàm tạo lớp con phải gọi đến hàm tạo lớp cha

Để sử dụng được model nào đó trong controller, ta sử dụng đoạn mã:

Trang 28

$db[„default‟][„hostname‟] = „localhost‟;// tên host chứa database

$db[„default‟][„username‟] = „root‟; //tên đăng nhập database

Trang 29

2.1.8 View

View đơn giản chỉ là những tập tin HTML có thể là một trang web, một mảnh web, header, footer, sidebar… Để thể hiện dữ liệu trong model thành các giao diện tương tác với người dùng Trong thực tế các file view có thể được nhúng vào nhau để tạo ra một giao diện trang web hoàn chỉnh Nội dung của các tập tin view chứa các mã html hoặc có thể thêm mã php View không bao giờ được gọi trực tiếp

mà phải thông qua controller Ví dụ:

$this->load->view(„content‟,$data);

Trong đó content là tên của tập tin view, $data chứa các thông tin dữ liệu sẽ được hiển thị trong view Cũng giống như view ta có thể lưu các file view vào các thư mục con để dễ quản lý

Khi đó để gọi được các file view trong thư mục con ta sẽ gọi như sau:

$this->load->view(„view/header‟,$data);

Các tập tin view sẽ được lưu trong folder application/views/ CodeIgniter cho phép sử dụng nhiều view trong cùng một hàm(phương thức) của controller Dữ liệu trong các view sẽ được kết hợp lại với nhau Ví dụ:

View có thể được gọi từ controller như trên và cũng có thể gọi từ model Ta

có thể truyền một mảng hoặc một đối tượng làm đối số thứ hai khi load view, Ví dụ:

Trang 30

$data = array(

‟title‟ => „My Title‟,

‟heading‟ => „My Heading‟,

‟message‟ => „My Message‟

//load model cần thiết

$this->load->model(„Mod_nhanvien‟);

$data[„ds_nhanvien‟]=$this->Mod_nhanvien->get_ds_nhanvien();

$this->load->view(„content‟,$data);

Trang 31

Và trong view content ta có thể sử dụng cấu trúc điều khiển (if, else, switch… case… ), lặp (for, while, do…while)… để hiển thị dữ liệu Ví dụ nội dung tập tin content.php như sau:

<p>Họ & Tên : <?php echo $row[„hoten_nhanvien‟]; ?></p>

<p>Địa Chỉ : <?php echo $row[„diachi_nhanvien‟]; ?></p>

<p>Điện Thoại : <?php echo $row[„dienthoai_nhanvien‟]; ?></p>

Đặc biệt CodeIgniter cho phép lập trình viên lấy về nội dung của view thay

vì bình thường chỉ xuất dữ liệu ra trình duyệt, bằng cách truyền true làm đối số thứ

ba khi tải view (mặc định đối số này là false)

Trang 32

Khi khai báo một lớp controller lập trình viên cần tuân thủ các quy tắc sau:

 Giống như các lớp model, chữ cái đầu tiên của lớp phải được viết hoa, phần còn lại viết bình thường Ví dụ: Blog, Account, Cart…

 Tên tập tin phải trùng với tên lớp và được đặt trong thư mục application/controllers/, lập trình viên có thể tạo các thư mục con để chứa các tập tin controller trong application/controllers để thuận tiện cho việc quản lý

sẽ gọi đến phương thức tương ứng trong controller, các segment còn lại trong URI chính là các tham số được truyền vào phương thức được gọi Ví dụ với URI như sau:

Trang 33

public function contruct()

Ngoài ra Controller cho phép lập trình viên thay đổi cơ chế gọi phương thức thông qua segment thứ hai bằng hàm _remap(), hàm này sẽ quyết định phương thức nào sẽ được gọi tương ứng với các điều kiện do lập trình viên định nghĩa hoặc các segment mà phương thức đó nhận Ví dụ:

public function _remap($method)

Trang 34

Không giống như các hệ thống khác trong CodeIgniter, Helpers không được viết theo định dạng hướng đối tượng,đơn giản chúng chỉ là tập hợp những thủ tục,chúng được tách riêng biệt và thực hiện một chức năng cụ thể, chúng không phụ thuộc vào nhau Các helper dựng sẵn được đặt trong thư mục system/helpers/

Theo mặc định các tập tin helper không được CodeIgniter tải, vì lý do nếu tải tất cả các helper cùng lúc trang web được load thì tốc độ sẽ giảm Vì vậy để sử dụng được một helper nào đó ta sẽ load trong controller

$this->load->helper(„name‟);

Trong đó name là tên của helper, bỏ đi phần “.php” hoặc “_helper” Ví dụ để

sử dụng Form Helpers (tên tập tin là url_helper.php) lập trình viên có thể khai báo:

có thể sử dụng các chức năng của helper đó

CodeIgniter cho phép lập trình viên mở rộng các helper có sẵn bằng cách tạo một tập tin có tên trùng với tên của helper cần mở rộng và có thêm tiền tố MY_ Ví

dụ đề thêm một hàm chức năng cho Array Helper, lập trình viên tạo một tập tin tên

Trang 35

My_array_helper.php trong thư mục application/helpers/My_array_helper.php, sau

đó khai báo như sau:

/ /any_in_array() is not in the Array Helper, so it defines a new function

function any_in_array($needle, $haystack)

{

$needle = (is_array($needle)) ? $needle : array($needle);

foreach ($needle as $item)

2.1.11 Thư viện của CodeIgniter

Sức mạnh của CodeIgniter nằm ở các thư viện dựng sẵn trong các tập tin system/libraries Ở phiên bản 2.0.2 CodeIgniter có 29 thư viện:

Bảng 2-1 Danh sách thư viện của CodeIgniter

Benchmarking Class Hỗ trợ đánh giá hiệu năng hệ thống

Trang 36

Database Hỗ trợ các chức năng tác động đến cơ sở dữ liệu

File Uploading Hỗ trợ tải các tập tin từ máy tính lên server

Form Validation Hỗ trợ chức năng kiểm tra dữ liệu người dùng

Output Hỗ trợ xuất thông tin về phía trình duyệt của người

dùng

Template Parser Hỗ trợ xử lý mã giả trong tập tin view

Unit Testing Hỗ trợ chức năng unit testing

URI Hỗ trợ chức năng URI,cho phép lấy thông tin từ URI

User Agent Cho phép xác định thông tin trình duyệt của người

dùng,thiết bị di động hoặc robot đang truy cập website

dựng một XML – RPC cho hệ thống

Zip Encoding Hỗ trợ chức năng tạo các file dạng zip

Để sử dụng được thư viện nào đó ta khi báo như sau:

$this->load->library(„database‟);

Trong đó database là tên tập tin thư viện cần load

Trang 37

Hoặc lập trình viên có thể vào tập tin application/config/autoload.php và thêm phần tử vào mảng $autoload[„libraries‟] ví dụ thêm thư viện pagination:

$autoload[„libraries‟] = array(„database‟,‟session‟,‟cart‟,‟pagination‟);

Trong đó database, session, cart là các thư viện đã được load trước đó

2.1.11.1 Định nghĩa một thư viện mới

CodeIgniter cho phép lập trình viên định nghĩa thêm thư viện mới, mở rộng hoặc thay thế thư viện dựng sẵn để phục vụ cho việc xây dựng ứng dụng Các tập tin thư viện sẽ được lưu trong thư mục application/libraries/ Tuy nhiên thư viện Database và Loader không thể mở rộng hoặc thay thế

Khi khai báo một thư viện mới ta cần tuân thủ các quy tắc sau:

 Tên tập tin phải được viết hoa chữ cái đầu tiên, phần còn lại viết thường Ví

dụ như: Lib_text.php, Search_all.php…

 Tên lớp thư viện phải được viết hoa chữ cái đầu tiên và phải trùng với tên tập tin, phần còn lại viết thường Ví dụ Lib_text, Search_all…

Một file thư viện có mẫu như sau:

<?php if ( ! defined(„BASEPATH‟)) exit(„No direct script access allowed‟);

$CI =& get_instance();

Sau khi khai báo $CI, lập trình viên có thể sử dụng các thư viện, helper bằng cách khai báo:

$CI->load->helper(„url‟);

Trang 38

$CI->load->library(„session‟);

$CI->config->item(„base_url‟);

2.1.11.2 Thay thế một thư viện

Để thay thế một thư viện dựng sẵn trong CodeIgniter, lập trình viên phải tạo một tập tin trong thư mục application/libraries/ Tên tập tin thư viện này phải trùng với tên tập tin thư viện cần thay thế Ví dụ để thay thế thư viện Email, lập trình viên tạo một tập tin application/libraries/Email.php và có nội dung như sau:

class MY_Email extends CI_Email {

2.2.1 Thư viện Calendar

Lớp Calendar cho phép bạn tạo lịch tự động Lịch của bạn có thể được định dạng thông qua việc sử dụng một mẫu lịch,cho phép tùy chỉnh mọi khía cạnh của thiết kế Ngoài ra lập trình viên có thể truyền dữ liệu đến các phần tử (ngày) của lịch

Để sử dụng được thư viện trên,lập trình viên cần khia báo như sau:

$this->load->library(„calendar‟);

Hiển thị calendar: Để hiển thị được calendar ta gọi hàm generate() trong thư

viện calendar:

Trang 39

echo $this->calendar->generate(2006, 6, $data);

Với ví dụ trên các ngày 3, 7, 13, 26 sẽ trở thành các đường dẫn và lần lượt dẫn đến

Trang 40

Đoạn mã trên sẽ tạo ra bộ lịch với bắt đầu lịch vào thứ bảy, kiểu định dạng của tháng là long, định dạng kiểu ngày là short Và kết quả sẽ là:

Hình 2-3 Lịch bắt đầu vào ngày thứ bảy

Theo mặc định của CodeIgniter:

Bảng 2-2 Bảng thiết lập giá trị của thư viện Calendar

Thiết lập Giá trị

mặc định

tuần (Sunday, Monday, Tuesday…)

Thiết lập ngày bắt đầu trong tuần của bộ lịch

(January), short là tên ngắn gọn(Jan)

(Sunday), short chỉ lấy ba ký tự đầu của ngày (Sun), abr chỉ lấy hai ký tự đầu của ngày (Su)

show_next_prev FALSE TRUE/FALSE Xác định có hiển thị liên kết

chuyển đến tháng kế tiếp hoặc tháng trước đó hay không

Ngày đăng: 30/05/2014, 16:39

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[5] Forum CodeIgniter - http://codeigniter.com/forums/ [6] Video Guide - Sách, tạp chí
Tiêu đề: http://codeigniter.com/forums/
[1] 2expertsdesign - http://www.2expertsdesign.com/tutorials/codeigniter-framework-tutorials-for-php-application Link
[2] CodeIgniter User Guide – http://codeigniter.com/user_guide/ Link
[3] CodeIgniterdirectory - http://www.codeigniterdirectory.com/ Link
[4] Izwebz - http://izwebz.com/ Link

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w