Tải bản đầy đủ (.pdf) (114 trang)

Xây dựng hệ thống ERP cho doanh nghiệp module quản lý sơ yếu lý lịch ứng viên và quy trình tuyển dụng cho công ty TNHH phần mềm 2NF

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 (3.2 MB, 114 trang )

 LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn chân thành và sâu sắc nhất đến
thầy

Trần Mạnh Tuấn, người đã tận tình chỉ bảo và hướng dẫn em trong

suốt quá trình học tập và thực hiện đồ án tốt nghiệp. Thầy đã giúp đỡ, dạy
bảo em không chỉ về mặt kiến thức, mà còn là những kỹ năng để học tập và
làm việc. Đó là những bài học kinh nghiệm quý báu sẽ đồng hành cùng em
trên suốt chặng đường học tập, nghiên cứu và làm việc sau này.
Em xin được gửi lời cảm ơn đến các thầy cô giáo của trường Đại học
Công nghệ Thông tin và Truyền thông Thái nguyên đã giảng dạy, truyền
đạt cho em những kiến thức tốt nhất, những kỹ năng sống. Đó là nền tảng
để em vững bước trên chặng đường sau này của mình.
Thực hiện tốt đồ án lần này còn có sự trợ giúp của các anh chị
trong công ty TNHH Phần mềm 2NF (2NF Software Co., LTD). Đặc biệt
được sự chỉ dẫn của anh Nguyễn Bảo Ngọc trong quá trình làm thực tập tốt
nghiệp. Nó đã tạo tiền đề cho lần thực hiện đề tài đồ án lần này.
Cuối cùng em xin gửi lời cảm ơn tới bố mẹ, gia đình, bạn bè, những
người đã luôn bên cạnh em trong mọi hoàn cảnh, tạo cho em những điều
kiện tốt nhất để em có thể phát huy, tìm hiểu những đam mê, sở thích của
mình trong các lĩnh vực.
Thái Nguyên, tháng 6 năm 2016
Người thực
hiện

Lê Văn Diện

1



 LỜI CAM ĐOAN
Trong báo cáo này sử dụng những kết quả nghiên cứu lý thuyết,
khảo sát thực tế và phân tích thiết kế hệ thống do em tham khảo tài liệu và
trực tiếp thực hiện dưới sự hướng dẫn của thầy Trần Mạnh Tuấn. Những kết
quả thu được là của riêng em và không sao chép trái phép.
Em cam đoan những kết luận trên là đúng sự thật, nếu sai lệch em
xin chịu hoàn toàn trách nhiệm.

Thái Nguyên, tháng 6 năm 2016
Người thực
hiện

Lê Văn Diện

2


 MỤC LỤC
LỜI CẢM ƠN

i

LỜI CAM ĐOAN

ii

MỤC LỤC

iii


DANH MỤC HÌNH ẢNH v
LỜI MỞ ĐẦU

1

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

3

1.1. Ngôn ngữ lập trình PHP 3
1.2. Framework Code Igniter 9
1.3. WebServer và Xampp
1.4. Bootstrap

26

27

1.5. Ajax 28
1.6. Jquery

30

CHƯƠNG 2 : PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG ERP – MODULE QUẢN
LÝ SƠ YẾU LÝ LỊCH ỨNG VIÊN VÀ QUY TRÌNH TUYỂN DỤNG

34

2.1. Xác định yêu cầu của website 34
2.2. Các phương pháp phân tích hệ thống và sơ đồ chức năng của

website

37

2.2.1. Các phương pháp phân tích hệ thống

37

2.2.2. Sơ đồ phân cấp chức năng của webssite
2.3. Xác định flow

40
3

39


2.4. Xác định mô hình TCMR Database ER Diagram 42
2.5.Mô tả các bảng dữ liệu: 43
CHƯƠNG 3 : CÀI ĐẶT XAMPP,CODEIGNITER VÀ XÂY DỰNG MOCKUP
BẰNG BOOTSTRAP

45

3.1. Cài đặt Xampp Control Panel v3.2.1 45
3.2. Cài đặt Codeigniter
3.2.1. Yêu cầu hệ thống

47
47


3.2.2. Cài đặt 47
3.2.3. Cấu trúc

48

3.2.4. Loại bỏ chuỗi index.php trong URL

50

3.3. Cài đặt Bootstrap và tạo mockup cho webssite
3.3.1. Cài đặt Bootstrap

51

51

3.3.2.Tạo mockup cho website

52

CHƯƠNG 4 : GIỚI THIỆU WEBSITE QUẢN LÝ QUY TRÌNH TUYỂN
DỤNG CHO CÔNG TY TNHH 2NF

53

4.1. Giao diện chính của website: 53
4.2. Giao diện một số chức năng của webssite: 57
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64


4



 DANH MỤC HÌNH ẢNH
Hình 1.1: Mô hình Model-View-Controller

11

Hình 1.2: Dòng chảy dữ liệu trong CodeIgniter 17
Hình 2.1: Sơ đồ phân cấp chức năng của website
Hình 2.2: Flow dữ liệu chính

41

Hình 2.3: Mô hình TCMR Database ER Diagram
Hình 3.1: Tiến hành cài đặt xampp
Hình 3.2:Ấn next để tiếp tục

45

45

Hình 3.3: Tiến trình cài đặt đang chạy
Hình 3.4: Cài đặt thành công

46

46


Hình 3.5: Mở trang điều khiển chính

47

Hình 3.6: Cấu trúc của codeigniter48
Hình 3.7: Thư mục application

49

Hình 3.8: File config.php 49
Hình 3.9: File database.ph 50
Hình 3.10: Cấu trúc của bootstrap 51
Hình 3.11: File index.html 51
Hình 3.12: Mockup header 52
Hình 3.13: Mockup footer 52
Hình 4.1: Giao diện trang chính

53

Hình 4.2: Giao diện trang Lists Skills

54

Hình 4.3: Giao diện trang Lists Entry Test

55

Hình 4.4: Giao diện trang Listing Account


56

Hình 4.5: Giao diện đăng nhập

39

57

Hình 4.6: Giao diện thêm thông tin User 57
Hình 4.7: Giao diện show thông tin ứng viên

58

Hình 4.10: Giao diện sửa thông tin ứng viên

59

5

42


Hình 4.11: Giao diện thêm mới ,sửa thông tin skill
Hình 4.12: Giao diện tìm kiếm skill

60

60

Hình 4.13: Giao diện thêm mới,sửa thông tin entry test 61

Hình 4.14: Giao diện tìm kiếm bài kiểm tra

61

Hình 4.15: Giao diện sửa thông tin user 62
Hình 4.15: Giao diện thay đổi mật khẩu user

62


 LỜI MỞ ĐẦU
Công nghệ thông tin đã có những bước phát triển mạnh mẽ. Máy tính
điện tử không còn là phương tiện quý hiếm mà đang ngày một gần gũi với
con người.
Đứng trước sự bùng nổ thông tin, các tổ chức và các doanh nghiệp
đều tìm mọi biện pháp để xây dựng hoàn thiện hệ thống thông tin của mình
nhằm tin học hóa các hoạt động tác nghiệp của đơn vị mình.
Nhu cầu thực tế của xã hội đòi hỏi con người phải luôn năng động và
sáng tạo để tạo ra ngày càng nhiều sản phẩm cho xã hội. Các công ty luôn
luôn phát triển, các hồ sơ tuyển vào sẽ nhiều lên vì vậy đòi hỏi phải cần rất
nhiều những kho chứa hồ sơ để lưu trữ hồ sơ của nhân viên khi vào công
ty. Để giảm đi những bất cập trong công tác quản lý nhân sự và lương trong
công ty, giải pháp hiệu quả nhất hiện nay là đầu tư công nghệ và thiết bị hiện
đại, ứng dụng công nghệ thông tin, tự động hoá trong điều hành và quản lý
nhân sự để nâng cao chất lượng phục vụ, đổi mới phương thức quản lý,
tăng năng suất hiệu quả.
Lưu trữ hồ sơ của ứng viên tìm việc là việc cất giữ lại hồ sơ của các
ứng viên để tra cứu khi cần thiết. Hồ sơ của ứng viên tìm việc được xem là
những thông tin liên quan đến một cá nhân. Thông tin của từng ứng viên có


6


những nét đặc trưng riêng cho nên không thể nhầm lẫn thông tin với bất kỳ
một cá nhân nào khác.
Tuyển dụng là một công tác quan trọng và thường xuyên của các doanh
nghiệp. Việc tuyển dụng đã khó nhưng để chọn một nhân viên có tài thực sự
thì càng khó gấp bội phần. Để tuyển dụng được đúng người thì một trong
những nghiệp vụ quan trọng đó là nhà tuyển dụng phải thực hiện tốt quy
trình tuyển dụng, trong đó không thể bỏ qua khâu sàng lọc và phân loại hồ
sơ. Chính vì vậy, việc sắp xếp, lưu trữ hồ sơ của các ứng viên một cách
khoa học thực sự rất cần thiết. Đây là một tiền đề quan trọng cho việc tuyển
chọn được những nhân viên xuất sắc cho doanh nghiệp.
Khi doanh nghiệp đăng tin tuyển dụng, các ứng viên quan tâm sẽ gửi
hồ sơ về doanh nghiệp. Lúc này doanh nghiệp phải tổ chức việc lưu trữ hồ
sơ của ứng viên để phục vụ cho công tác tuyển dụng của mình.Việc lưu trữ
hồ sơ ứng viên một cách khoa học giúp cho doanh nghiệp dễ sàng lọc, phân
loại ứng viên theo những tiêu chí lựa chọn mà doanh nghiệp đã đề ra, giúp
doanh nghiệp loại bớt những ứng viên không đáp ứng được yêu cầu. Đây là
công việc hết sức quan trọng và cần thiết vì nó giúp cho doanh nghiệp tiết
kiệm rất nhiều thời gian, công sức và chi phí. Ngoài ra, lưu trữ hồ sơ ứng
viên cũng giúp cho doanh nghiệp làm công tác dự phòng với những ứng
viên chưa được tuyển dụng. Đây thực sự là một nguồn cung cấp ứng viên
“miễn phí” cho doanh nghiệp khi cần thiết.
Hôm nay em chọn đề tài đồ án tốt nghiệp “Xây dựng hệ thống ERP
cho doanh nghiệp - Module Quản lý sơ yếu lý lịch ứng viên và quy
trình tuyển dụng cho Công ty TNHH Phần mềm 2NF”. Website của em
có thể chưa hoàn chỉnh và còn nhiều thiếu sót nhưng đó là sự cố gắng của
em trong bước đầu hòa nhập vào môi trường làm việc bên ngoài. Em mong


7


quý thầy cô trong khoa có thể tạo điều kiện giúp đỡ em hoàn thành đồ án
tốt hơn.
Website quản lý quy trình tuyển dụng cho công ty TNHH 2NF của em
được lập trình bằng ngôn ngữ lập trình PHP sử dụng công nghệ
Framework Code Igniter và kết nối bằng cơ sở SQL, website giúp công ty
quản lý hồ sơ ứng viên, giúp giảm tải bớt việc tìm kiếm mất thời gian mà
hiệu quả và tính chính xác vẫn cao.
Nhằm giới hạn phạm vi nghiên cứu theo như mục đích đã đề ra, đề
tài tập trung xem xét, phân tích đánh giá các vấn đề nằm trong phạm vi sau:
 Trang Web quản lý hồ sơ ứng viên cho công ty doanh nghiệp.
 Ngôn ngữ sử dụng là ngôn ngữ PHP.
 Công nghệ sử dụng là công nghệ: Bootstrap, Framework
Code Igniter, AJAX, Jquery, XAMPP

 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
 1.1. Ngôn ngữ lập trình PHP
 Định nghĩa
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ
8


lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển
các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng
quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML.
Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp
giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn
hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một

ngôn ngữ lập trình web phổ biến nhất thế giới.
 Lịch sử phát triển của PHP
PHP/FI
PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do
Rasmus Lerdorf tạo ra năm 1994, ban đầu được xem như là một tập con
đơn giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản
sơ yếu lý lịch của ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là
'Personal Home Page Tools'. Khi cần đến các chức năng rộng hơn,
Rasmus đã viết ra một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các
cơ sở dữ liệu và giúp cho người sử dụng phát triển các ứng dụng web đơn
giản. PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm
một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút
được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền
đã được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên
mạng Internet. Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc
tu chỉnh mã nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự
án của một người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một
thời gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không
9


lâu sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.

PHP 3
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi
với các phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi
Gutmans và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã
nguồn trước đó. Các tính năng khác được giới thiệu trong PHP 3.0 gồm có

hỗ trợ cú pháp hướng đối tượng và nhiều cú pháp ngôn ngữ nhất quán
khác.Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa
bỏ mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên
PHP/FI 2.0 gợi nhắc. Nó đã được đặt tên ngắn gọn là 'PHP', một kiểu viết
tắt hồi quy của "PHP: Hypertext Preprocessor".
PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời
gian 9 tháng được cộng đồng kiểm nghiệm.
PHP 4
Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công
bố, Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần
lõi của PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng
phức tạp, và cải tiến tính mô đun của cơ sở mã PHP. Một động cơ mới, có
tên 'Zend Engine' (ghép từ các chữ đầu trong tên của Zeev và Andi), đã
đáp ứng được các nhu cầu thiết kế này một cách thành công, và lần đầu
tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên động cơ này, và
đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức được công
bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời. Ngoài tốc

10


độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ yếu
khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc
HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử
dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ
mới.
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và
hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền
trên mạng Internet.
PHP 5

Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm
phát triển PHP tự mãn. Cộng đồng PHP đã nhanh chóng giúp họ nhận ra
những yếu kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối
tượng (OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của
MySQL 4.1 và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục
đích để Zeev và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Ngày 14 tháng
7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chín
muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra một
hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực hiện các
câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có
những cải tiến trong nhân Zend Engine 2, nâng cấp mô đun PCRE lên bản
PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP, streams và
SPL.
PHP 6
Hiện nay phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản
sử dụng thử đã có thể được download tại địa chỉ .
Phiên bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở
phiên bản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn
11


chưa công bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm
API chuẩn cho việc truy cập cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành
thư viện PECL...
 Cú pháp
PHP chỉ phân tích các đoạn mã nằm trong những dấu giới hạn của
nó. Bất cứ mã nào nằm ngoài những dấu giới hạn đều được xuất ra trực
tiếp không thông qua xử lý bởi PHP. Các dấu giới hạn thường dùng nhất
là <?php và ?>, tương ứng với dấu giới hạn mở và đóng. Các dấu giới
hạn <script language="php"> và </script> cũng đôi khi được sử dụng.

Cách viết dấu giới hạn dạng thẻ ngắn cũng có thể được dùng để thông
báo bắt đầu đoạn mã PHP, là ra (echo) các xâu ký tự hay biến) với thẻ thông báo kết thúc đoạn mã
PHP là ?>. Những thẻ này thường xuyên được sử dụng, tuy nhiên giống
với những thẻ kiểu ASP (<% hay <%= và %>), chúng không có tính di
động cao bởi có thể bị vô hiệu khi cấu hình PHP. Bởi vậy, việc dùng các
thẻ dạng ngăn hay các thẻ kiểu ASP không được khuyến khích. Mục đích
của những dấu giới hạn này là ngăn cách mã PHP với những đoạn mã
thuộc ngôn ngữ khác, gồm cả HTML. Mọi đoạn mã bên ngoài các dấu
này đều bị hệ thống phân tích bỏ qua và được xuất ra một cách trực tiếp.
Các biến được xác định bằng cách thêm vào trước một dấu đô la ($)
và không cần xác định trước kiểu dữ liệu. Không giống với tên hàm và lớp,
tên biến là trường hợp nhạy cảm. Cả dấu ngoặc kép ("") và ký hiệu đánh
dấu văn bản (<<PHP coi xuống dòng như một khoảng trắng theo kiểu như một ngôn ngữ
dạng tự do (free-form language) (trừ khi nó nằm trong trích dẫn xâu), và các
phát biểu được kết thúc bởi một dấu chấm phẩy. PHP có ba kiểu cú pháp
12


chú thích: /* */ cho phép một đoạn chú thích tùy ý, trong khi đó // và # cho
phép chú thích trong phạm vi một dòng. Phát biểu echo là một trong những
lệnh của PHP cho phép xuất văn bản (vd. ra một trình duyệt web).
Về cú pháp các từ khóa và ngôn ngữ, PHP tương tự hầu hết các
ngôn ngữ lập trình bậc cao có cú pháp kiểu C. Các phát biểu điều kiện
If (Nếu), vòng lặp for và while, các hàm trả về đều tương tự cú pháp
của các ngôn ngữ như C, C++, Java và Perl.
 Biến trong PHP
Trong PHP biến được ký hiệu bởi dấu " $ " đi sau là các ký tự bao
gồm các chữ cái thường (a - z) in hoa (A - Z) và các chữ số (0 - 9) và

dấu " gạch dưới " ( _ ) .
- Biến bắt đầu bằng dấu " $ " sau đó là các ký tự chữ cái hoặc dấu
gạch dưới.
- Biến không được viết cách.
- Biến không được bắt đầu bằng chữ số:
Ví dụ:

 Hằng trong PHP
Trong PHP có hai loại hằng, hằng có sẵn trong PHP và hằng do
chúng ta tự định nghĩa.
13


- Hằng có sẵn trong PHP, ví dụ như:

Và rất nhiều các hằng khác như E_ERROR, E_WARNING...
- Hằng do chúng ta định nghĩa, để định nghĩa hằng chúng ta dùng
cấu trúc sau :

 Toán tử trong PHP
 Toán tử gán : dễ thấy ngay trong khi ta gán giá trị cho 1 biến, ví
dụ:

 Toán tử số học : là các phép toán cơ bản mà các bạn hay thấy
như cộng, trừ, nhân, chia...
Tên

Ký hiệu

14


Mô tả

Ví dụ


Phép cộng

+

Cộng hai số

$a + $b

hạng
Phép trừ

-

Trừ hai số hạng

$a - $b

Phép nhân

*

Nhân hai số

$a * b


hạng
Phép chia

/

Chia hai số

$a / $b

hạng
Phép chia lấy

%

Chi lấy dư



15

5%2=1


 Toán tử so sánh : các phép toán logic như so sánh bằng, lớn
hơn hoặc nhỏ hơn...
Tên

Ký hiệu


Mô tả

Ví dụ

So sánh bằng

==

Hai số hạng

$a == $b

bằng nhau
So sánh khác

!=

Hai số hạng

$a != $b

khác nhau
So sánh lớn

>

So sánh lớn

hơn
So sánh nhỏ


hơn
<

So sánh nhỏ

hơn
Lớn hơn hoặc

$a < $b

hơn
>=

Lớn hơn hoặc

bằng
Nhỏ hơn hoặc

$a > b

$a >= $b

bằng
<=

Nhỏ hơn hoặc

bằng


$a <= $b

bằng

 Toán tử logic : là tổ hợp các giá trị boolean có kết quả trả về là
TRUE hoặc FALSE
Tên

Ký hiệu

16

Mô tả

Ví dụ


Phép và

&& hoặc and

Cả 2 vế phải

$a > $b && $a

thoả mãn điều

> $c

kiện

Phép hoặc

|| hoặc or

Một trong 2

$a > $b || $a <

thoả mãn điều

$c

kiện là được
Phủ định

!

Phủ định 1 điều

$a != b

kiện, giá trị nào
đó

 1.2. Framework Code Igniter
 Tại sao lại dùng Framework ?
Framework cho phép cấu trúc trong việc phát triển các ứng dụng bằng
cách cung cấp các class và functions có thể tái sử dụng và có thể làm
giảm thời gian phát triển đáng kể. Một số nhược điểm để Framework được
cho rằng họ cung cấp các class không thích hợp cho các ứng dụng khác

nhau làm cho các ứng dụng khó khăn hơn để điều hướng.
 Định nghĩa
CodeIgniter là một nền tảng ứng dụng web 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
17


được phát hành ngày 28.02.2006, phiên bản hiện tại: 1.7.2 (phát hành ngày
11.09.2009). Ý tưởng xây dựng CodeIgniter được dựa trên Ruby on Rails,
một nền tảng ứng dụng web được viết bằng ngôn ngữ Ruby. Hiện tại,
CodeIgniter đang được phát triển bởi ExpressionEngine Development
Team thuộc EllisLab, Inc.
 Ưu điểm
 Được thiết kế theo mô hình Model-View-Controller: Mô hình MVC
giúp tách thành phần hiển thị giao diện (presentation) và xử lý (business
logic) của một phần mềm thành những thành phần độc lập, từ đó giúp cho
việc thiết kế, xử lý và bảo trì mã nguồn dễ dàng, đồng thời tăng khả năng
mở rộng của phần mềm. CodeIgniter vận dụng mô hình này trong thiết kế,
giúp tách biệt các tập tin giao diện với các tập tin xử lý dữ liệu, nâng cao
khả năng quản lý và dễ bảo trì.
 Nhỏ gọn: Gói cài đặt chỉ 404KB (không bao gồm phần User Guide).
So với các PHP framework khác như CakePHP (1.3MB), Symfony
(5.08MB) hay Zend Framework (5.66MB)…kích thước của CodeIgniter giúp
giảm thiểu đáng kể không gian lưu trữ.
 Tốc độ nhanh: CodeIgniter được đánh giá là PHP framework có tốc
độ nhanh nhất hiện nay. Bằng cơ chế lưu nội dung vào bộ đệm (cache),
kiểm tra bộ đệm trước khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số
lần truy cập và xử lý dữ liệu, từ đó tối ưu hóa tốc độ tải trang.
 Miễn phí: CodeIgniter được phát hành dưới giấy phép Apache/BSD
mở rộng, cho phép người dùng tự do thay đổi, phát triển và phân phối mã


18


nguồn.
 Hỗ trợ Search Engine Optimization: Cấu trúc URL của
CodeIgniter rất thân thiện với các robot tìm kiếm.
 Hệ thống thư viện phong phú: CodeIgniter cung cấp các thư viện
phục vụ cho những tác vụ thường gặp nhất trong lập trình web, chẳng hạn
như truy cập cơ sở dữ liệu, gửi email, kiểm tra dữ liệu, quản lý session, xử lý
ảnh…đến những chức năng nâng cao như XML-RPC, mã hóa, bảo mật…
 Bảo mật hệ thống: Cơ chế kiểm tra dữ liệu chặt chẽ, ngăn ngừa
XSS và SQL Injection của CodeIgniter giúp giảm thiểu các nguy cơ bảo mật
cho hệ thống.
 Hỗ trợ ORM (Object-Relational Mapping): Object Relational
Mapping (ORM) là một kỹ thuật lập trình, trong đó các bảng của cơ sở dữ
liệu được ánh xạ thành các đối tượng trong chương trình. Kỹ thuật này giúp
cho việc thực hiện các thao tác trong cơ sở dữ liệu (Create Read Update
Delete – CRUD) dễ dàng, mã nguồn ngắn gọn hơn.
 Hỗ trợ AJAX: AJAX (Asynchronous JavaScript and XML) đã trở
thành một phần không thể thiếu trong bất kỳ ứng dụng Web 2.0 nào. AJAX
giúp nâng cao tính tương tác giữa người dùng và hệ thống, giúp cho người
dùng có cảm giác như đang sử dụng ứng dụng desktop vì các thao tác đều
diễn ra “tức thời”. Hiện tại, CodeIgniter vẫn chưa có thư viện dựng sẵn nào
để hỗ trợ xây dựng ứng dụng AJAX. Lập trình viên phải sử dụng các thư
viện bên ngoài, như jQuery, Script.aculo.us, Prototype hay Mootools…
 Nhược điểm
19



 Chưa hỗ trợ một số module thông dụng: So sánh với framework
khác, CodeIgniter không có các module thực thi một số tác vụ thường gặp
trong quá trình xây dựng ứng dụng web như Chứng thực người dùng (User
Authorization), Trình phân tích RSS (RSS Parser) hay Trình xử lý PDF…
 Chưa

hỗ

trợ

Event-Driven

Programming:

Event-Driven

Programming (EDP) là một nguyên lý lập trình, trong đó các luồng xử lý của
hệ thống sẽ dựa vào các sự kiện, chẳng hạn như click chuột, gõ bàn
phím…Đây không phải là một khuyết điểm to lớn của CodeIgniter vì hiện
tại, chỉ có một số ít framework hỗ trợ EDP, bao gồm Prado, QPHP và Yii.
 Chưa hỗ trợ Object-Relational Mapping (ORM) : ORM là một kỹ
thuật lập trình, trong đó các bảng của cơ sở dữ liệu được ánh xạ thành các
đối tượng trong lập trình. Kỹ thuật này giúp cho việc thực hiện các thao tác
trong cơ sở dữ liệu (Create Read UpdateDelete – CRUD) dễ dàng, mã
nguồn ngắn gọn hơn.
 Mô hình Model-View-Controller
Model-View-Control (MVC) là một kiến trúc phần mềm, hiện đang được
xem là một mẫu thiết kế trong công nghệ phần mềm. Mô hình MVC tách
biệt phần xử lý dữ liệu ra khỏi phần giao diện, cho phép phát triển, kiểm tra
và bảo trì các thành phần một cách độc lập.


20


Hình 1.1: Mô hình Model-View-Controller
Theo đó:
 Model thể hiện các cấu trúc dữ liệu. Các lớp thuộc thành phần
Model thường thực hiện các tác vụ như truy vấn, thêm, xóa, cập nhật dữ
liệu. Khi dữ liệu trong Model thay đổi, thành phần View sẽ được cập nhật
lại.
 View 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 sử dụng. Một Model có thể có nhiều View tùy thuộc vào
các mục đích khác nhau.
 Controller đóng vai trò trung gian giữa Model và View. Thông tin
người dùng từ View được gửi cho Controller xử lý, sau đó Controller tương
tác với Model để lấy dữ liệu được yêu cầu, sau cùng Controller trả dữ liệu
này về cho View. Mô hình MVC thường được sử dụng trong các ứng dụng
web,vì thành phần View (mã HTML/XHTML) được sinh ra từ các ngôn ngữ
21


lập trình web. Thành phần Controller sẽ nhận các dữ liệu GET/POST, xử
lý những dữ liệu này, sau đó chuyển sang Model xử lý.Model sẽ rả dữ liệu
về phía Controller,sau đó Controller sinh mã HTML/XHTML để thể hiện
trên View.
 Model
Model là những lớp được xây dựng nhằm thực hiện việc trao đổi thông
tin với cơ sở dữ liệu. Một lớp Model có thể thực hiện các tác vụ truy vấn,
thêm, xóa, cập nhật dữ liệu. Trong CodeIgniter, việc khai báo các lớp
model dành cho một thực thể nào đó là không cần thiết, vì trong controller

của thực thể đó, ta có thể gọi đến thư viện database để thực hiện các thao
tác với cơ sở dữ liệu. Tuy nhiên, để tiện cho việc quản lý, xây dựng lớp
model cho một thực thể được khuyến khích. Một lớp model chuẩn trong
CodeIgniter có cấu trúc như sau:

Khi khai báo một lớp model, ta cần tuân theo một số quy tắc:

22


 Tên lớp được viết hoa chữ đầu tiên, phần còn lại viết thường. Ví dụ:
User_model, Blog_model, Article_model…
 Tên tập tin được đặt như tên lớp,và được đặt trong thư mục:
application/models/. Các thư mục có thể được lưu lồng với nhau để
thuận tiện cho việc quản lý.
 Bắt buộc phải kế thừa từ lớp CI_Model. Trong hàm tạo của lớp con,
phải gọi đến hàm tạo của lớp cha.
Để sử dụng model trong controller, ta sử dụng đoạn mã sau :

Trong đó, model_name là tên của lớp model. Nếu lớp model được lưu
trong một thư mục, ta cần ghi rõ đường dẫn đến thư mục đó. Ví dụ lớp
Blog_model

được

lưu

trong

thư


mục

application/models/front_end/blog_model.php. Để sử dụng lớp này, ta sử
dụng đoạn mã sau:

Sau khi load lớp model, ta có thể sử dụng lớp này trong chương trình bằng
cách gọi

Để gán một tên khác cho lớp model khi sử dụng trong chương trình, ta có
thể truyền vào tham số thứ hai như sau:

23


Khi đó, để sử dụng các phương thức của lớp model, ta gọi:

 View
View là những tập tin HTML được xây dựng nhằm 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 có thể là một
trang web hoàn chỉnh, hay chỉ là một phần của trang web (header, footer,
sidebar…). Nội dung của tập tin view, ngoài mã HTML còn có thể chứa mã
PHP. View không bao giờ được gọi trực tiếp mà phải thông qua controller.
Để sử dụng view trong controller, ta sử dụng đoạn mã sau:

Trong đó, view_name là tên của view, $data chứa các dữ liệu sẽ được hiển
thị trong view. Cũng giống như model, ta có thể lưu view trong các thư mục
để tiện cho việc quản lý.
Khi sử dụng, chỉ cần khai báo đường dẫn tương đối đến thư mục chứa
view.




dụ

tập

tin

header.tpl.php

được

lưu

trong

thư

mục

application/views/front_end.

Để hiển thị view này, ta sử dụng đoạn mã sau:

CodeIgniter cho phép sử dụng nhiều view trong cùng một 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ụ:
24



Để hiển thị dữ liệu trong model ra view, ta có thể truyền một mảng hoặc
đối tượng làm đối số thứ hai khi load view. Ví dụ:

Hoặc

Khi đó, các khóa của mảng hoặc các thuộc tính của đối tượng sẽ được
chuyển thành các biến để sử dụng trong tập tin view. Dưới đây là nội dung
mẫu của tập tin employee_detail.php:

Ta cũng có thể sử dụng các cấu trúc điều khiển (if, else,
switch…case…), lặp (for, while, do…while…) bên trong view để hiển thị dữ
liệu. Ví dụ sau sẽ hiển thị danh sách các nhân viên:

25


×