BM/QT10/P.ĐTSV/04/04
Ban hành lần: 3
UBND TỈNH BÀ RỊA – VŨNG TÀU
TRƯỜNG CAO ĐẲNG KỸ THUẬT CƠNG NGHỆ
GIÁO TRÌNH
MƠ ĐUN LẬP TRÌNH WEB PHP NÂNG CAO
NGHỀ: CƠNG NGHỆ THƠNG TIN
TRÌNH ĐỘ: CAO ĐẲNG
(Ban hành kèm theo Quyết định số: ……/QĐCĐKTCN, ngày … tháng … năm
20…… của Hiệu trưởng Trường Cao đẳng Kỹ thuật Cơng nghệ BRVT)
BÀ RỊA – VŨNG TÀU, NĂM 2020
TUN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh
viên nghề Cơng nghệ Thơng tin trong trường Cao đẳng Kỹ thuật Cơng nghệ
Bà Rịa – Vũng Tàu, chúng tơi đã thực hiện biên soạn tài liệu Lập trình web
PHP nâng cao.
Tài liệu được biên soạn thuộc loại giáo trình phục vụ giảng dạy và học
tập, lưu hành nội bộ trong Nhà trường nên các nguồn thơng tin có thể được
phép dùng ngun bản hoặc trích dùng cho các mục đích về đào tạo và tham
khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh
doanh thiếu lành mạnh sẽ bị nghiêm cấm.
LỜI GIỚI THIỆU
Giáo trình “Lập trình web PHP nâng cao” được biên soạn dựa trên khung
chương trình đào tạo Cao đẳng nghề Cơng nghệ Thơng tin đã được Trường
Cao đẳng Kỹ thuật Cơng nghê Bà Rịa – Vũng Tàu phê duyệt.
Tác giả đã nghiên cứu một số tài liệu, cơng nghệ hiện đại kết hợp với
kinh nghiệm làm việc thực tế để viết nên giáo trình này. Nội dung được tác
giả trình bày cơ động, dễ hiểu kèm theo các bước hướng dẫn thực hành chi
tiết theo ngun tắc quan tâm đến kết quả đầu ra, khả năng tự học và kỹ
năng cần thiết để HSSV có thể hồn thành ứng dụng web quảng cáo sản
phẩm, thương mại điện tử, … bằng ngơn ngữ PHP, một trong những ngơn
ngữ lập trình ứng dụng web thơng dụng hiện nay, đáp ứng nhu cầu thực tế
của doanh nghiệp.
Nội dung giáo trình được chia thành 07 bài, trong đó:
Bài 1: Tổng quan
Bài 2: Tạo ứng dụng CodeIgniter đầu tiên
Bài 3: Routing
Bài 4: Controller
Bài 5: View
Bài 6: Model
Bài 7: Hồn chỉnh Controller/View
Trong q trình biên soạn, chắc chắn giáo trình cịn nhiều thiếu sót. Tác
giả rất mong nhận được ý kiến đóng góp của q thầy/cơ và các em học sinh,
sinh viên để tiếp tục hồn thiện hơn.
Xin chân thành cảm ơn q đồng nghiệp, bạn bè đã có những ý kiến
đóng góp trong q trình biên soạn giáo trình này.
Bà Rịa – Vũng Tàu, ngày …… tháng …… năm ………
Tham gia biên soạn
1. Phan Hữu Phước – Chủ biên
MỤC LỤC
GIÁO TRÌNH MƠ ĐUN
Tên mơ đun: Lập trình web PHP nâng cao
Mã mơ đun: MĐ29
Vị trí, tính chất, ý nghĩa và vai trị của mơ đun:
Sau khi học xong Lập trình web PHP & MySQL
Cung cấp cho người học kiến thức và kỹ năng để có thể thiết kế, xây dựng
và phát triển ứng dụng web theo mơ hình MVC dựa trên CodeIgniter
Framework.
Mục tiêu của mơ đun:
Về kiến thức:
Trình bày được MVC
Trình bày q trình route và xử lý u cầu trong site CodeIgniter
Biết các bước tạo website PHP sử dụng framework CodeIgniter
Trình bày quy trình xây dựng Model, Controller
Trình bày quy trình truyền dữ liệu Model, Controller, View
Biết quy trình truy xuất CSDL
Về kỹ năng:
Tải và tạo site sử dụng framework CodeIgniter
Tạo Route
Tạo Model, Cotroller
Định nghĩa các thuộc tính, phương thức cho Model
Định nghĩa các hàm cho Controller
Tạo View cho các hàm trong Controller
Xây dựng các hàm truy xuất CSDL trong Model, Controller
Tạo các View hiển thị dữ liệu
Về năng lực tự chủ và trách nhiệm:
Tham gia xây dựng các chức năng cho website sử dụng framework
CodeIgniter.
Có thể vận dụng để xây dựng website thương mại, quảng bá chun
nghiệp bằng các framework, CMS mã nguồn mở: Wordpress, Joomla,
…
Lưu site đúng đường dẫn
Đặt tên tập tin, thư mục đúng quy định
Tự tìm hiểu tài liệu nâng cao kiến thức và kỹ năng xây dựng ứng dụng
web theo mơ hình MVC
Nội dung của mơ đun:
BÀI 1: TỔNG QUAN
Mã bài: 22.1
Giới thiệu:
MVC là mơ hình ứng dụng web phổ biến hiện nay. Có nhiều framework
mã nguồn mở dùng ngơn ngữ PHP với mơ hình MVC, trong số đó có
framework CodeIgniter.
Mục tiêu:
Trình bày các thành phần trong mơ hình MVC
Biết lợi ích của framework CodeIgniter
Trình bày dịng xử lý của CodeIgniter sau khi tiếp nhận u cầu
Tự tìm hiểu các thơng tin khác trên trang CodeIgniter
Đảm bảo an tồn cho người và thiết bị
Nội dung chính:
Mơ hình MVC
Model View Controller là một mơ hình kiến trúc theo hướng đối tượng, cho
phép người phát triển tách một ứng dụng thành 3 thành phần chính:
Model: thành phần đại diện cho dữ liệu của ứng dụng, bao gồm cả chức
năng kiểm tra tính hợp lệ của dữ liệu.
View: thành phần đảm trách việc hiển thị dữ liệu và các thành phần trong
giao diện người dùng.
Controller: thành phần có trách nhiệm tiếp nhận và xử lý các u cầu gửi
đến cho ứng dụng, làm nhiệm vụ điều phối cơng việc giữa View và
Model.
Việc phát triển ứng dụng, nâng cấp, bảo trì và thử nghiệm trở nên đơn
giản và dễ dàng hơn.
Hình 1.1. Các thành phần trong mơ hình MVC
Hình 1.2. Hoạt động của mơ hình MVC
CodeIgniter
Là mã nguồn mở giúp dễ dàng xây dựng ứng dụng web theo mơ hình MVC
bằng ngơn ngữ PHP với nhiều ưu điểm.
Miễn phí
Dung lượng nhỏ
Nhanh
Tạo URL rõ ràng theo SEO
Khơng u cầu engine
Có đầy đủ thư viện hỗ trợ việc truy xuất CSDL, xử lý gửi/nhận email,
hình ảnh, upload tập tin
Hỗ trợ xử lý phân trang
…
(Xem thêm: />
Dịng xử lý của ứng dụng web CodeIgniter
Tập tin index.php khởi tạo các nguồn tài ngun cần thiết.
Route phân tích u cầu để quyết định cơng việc cần xử lý.
Nếu tập tin cache đã có, sẽ được gửi trực tiếp đến trình duyệt.
An tồn: trước khi controller được nạp, u cầu HTTP và dữ liệu nào được
submit đều được lọc.
Controller nạp model, thư viện, helper, và các nguồn tài ngun cần thiết
khác để xử lý đáp ứng cho u cầu cụ thể.
Cuối cùng, view được diễn giải sau đó gửi cho trình duyệt. Nếu cache
được bật thì view được lưu vào cache trước rồi mới giải quyết u cầu.
CÂU HỎI, BÀI TẬP
1.1. Tên và chức năng của các thành phần trong mơ hình MVC?
1.2. Dịng xử lý của ứng dụng web CodeIgniter?
BÀI 2: TẠO ỨNG DỤNG CODEIGNITER ĐẦU TIÊN
Mã bài: 22.2
Giới thiệu:
Bài này giúp HSSV tạo site mới từ mã nguồn CodeIgniter, khảo sát cấu
trúc lưu trữ bên trong site được tạo từ framework CodeIgniter.
Mục tiêu:
Biết địa chỉ để tải framework CodeIgniter
Biết cú pháp URI trong website được viết theo mơ hình MVC
Tạo site bằng CodeIgniter framework
Lưu site vào đúng đường dẫn
Nội dung chính:
1. Tạo cơ sở dữ liệu
Tạo và nhập dữ liệu cho CSDL bookstore theo u cầu dưới.
Table chude
Table nxb
Table tacgia
Table sach
Table thamgia
Quan hệ
Dữ liệu
2. Tải mã nguồn và tạo site
Bước 1: truy cập trang web
Bước 2: click chuột lên biểu tượng Download để tải mã nguồn
Bước 3: giải nén tập tin đã tải
Bước 4: copy các tập tin và thư mục bên trong vào
C:\xampp\htdocs\IgniterSite1
(C:\xampp là thư mục củ gói XAMPP đã được cài đặt trên máy tính)
Hình 2.1. Mã nguồn CodeIgniter
Bước 5: Tạo IgniterSite1 đến C:\xampp\htdocs\IgniterSite1 trong
DreamWeaver
Cấu trúc thư mục
Hình 2.2. Cấu trúc tập tin, thư mục bên trong site CodeIgniter
config: chứa các tập tin cấu hình
controllers: chứa các tập tin định nghĩa controller
models: chứa các tập tin định nghĩa lớp đối tượng model
views: chứa các tập tin giao diện (view)
CÂU HỎI, BÀI TẬP
2.1. Tải mã nguồn và tạo site tracuudiem
2.2. Tên thư mục chứa các tập tin cấu hình?
BÀI 3: ROUTING
Mã bài: 22.3
Giới thiệu:
Cơng việc ngay sau khi tạo mới một site là phải cấu hình. Bên cạnh đó,
cịn phải định nghĩa route xử lý một số u cầu đặc biệt bên trong ứng dụng.
Mục tiêu:
Biết q trình xử lý u cầu của site
Biết chức năng của route trong site
Cấu hình cho site CodeIgniter framework
Tạo một trang đơn giản
Đặt tên tập tin, thư mục đúng quy tắc
Nội dung chính:
1. Cấu hình site
1.1. Nhập thơng tin cấu hình chung
Bước 1: mở tập tin application/config/config.php và cập nhật cho 2 dịng
lệnh
Bước 2: mở tập tin application/config/database.php và cập nhật thơng tin truy
cập CSDL MySQL
1.2. Đọc thơng tin cấu hình
Cú pháp
Ví dụ: Mở tập tin application/views/welcome_message.php và cập nhật như
sau:
Truy cập lại trang trên trình duyệt để xem kết quả.
1.3. Tạo thơng tin cấu hình riêng
B1: Tạo tập tin cấu hình application/config/customconfig.php và nhập nội
dung như sau:
B2: Tải tập tin cấu hình riêng. Mở tập tin
application/controllers/Welcome.php và cập nhật cho hàm index
B3: Đọc thơng tin cấu hình riêng
Mở tập tin application/views/welcome_message.php và cập nhật nội dung như
sau:
Cấu trúc địa chỉ
Địa chỉ site theo mơ hình MVC có cấu trúc tổng qt như sau:
Nếu khơng có method thì hàm hành động index sẽ được gọi.
controller: lớp đối tượng nhận xử lý u cầu
method: hàm hành động được gọi của controller
arguments: tham số truyền vào hàm hành động
Ví dụ 1: http://localhost/ignitersite1/index.php/sach/chude/1
controller: sach
method: chude
arguments: id=1
Ví dụ 2: http://localhost/ignitersite1/index.php/sach/xem/13412786
controller: sach
method: xem
arguments: id=13412786
Ví dụ 3: http://localhost/ignitersite1/index.php/home/gioithieu
controller: home
method: gioithieu
arguments: khơng có
Ví dụ 4: http://localhost/ignitersite1/index.php/home
controller: home
method: index
arguments: khơng có
Ví dụ 5: http://localhost/ignitersite1/index.php
controller: welcome (quy định trong tập tin application/config/routes.php)
method: index
arguments: khơng có
Cấu hình route mặc định
Mở tập tin application/config/routes.php. Xóa hết tất cả và cập nhật lại nội
dung như sau:
Khi địa chỉ truy cập được tìm thấy trong tập tin routes.php thì sẽ được xử lý
theo quy tắc bên trong routes.php. Ngược lại, u cầu sẽ được xử lý theo cấu
trúc tổng qt (đã trình bày trong Mục 3.1).
Với định nghĩa route như trên, các controller, method và arguments sẽ được
truyền khi truy cập địa chỉ tương ứng như sau:
Ví dụ 1: http://localhost/ignitersite1
controller: home
method: index
arguments: khơng có
Ví dụ 2: http://localhost/ignitersite1/index.php/home/gioithieu
controller: home
method: view
arguments: id=‘gioithieu’
Ví dụ 3: http://localhost/ignitersite1/index.php/home/lienhe
controller: home
method: view
arguments: id=‘lienhe’
Khi truy cập các địa chỉ trên thì sẽ hiển thị kết quả sau:
Như phân tích với các ví dụ trên, ứng dụng cần phải có controller home với
các hàm index và view.
Tạo tập tin application/controllers/Home.php với nội dung bên dưới.
Đã tạo xong controller home với các method (hàm hành động) index và view.
Truy cập trang theo địa chỉ của 3 ví dụ trên để xem kết quả.
CÂU HỎI, BÀI TẬP
Cập nhật tập tin application/config/routes.php và tạo các controller để hiển
thị kết quả với địa chỉ truy cập tương ứng như sau:
http://localhost/ignitersite1/index.php/sach
DANH MỤC SÁCH MỚI
http://localhost/ignitersite1/index.php/sach/chude/1
DANH MỤC SÁCH THUỘC CHỦ ĐỀ 1
http://localhost/ignitersite1/index.php/sach/chude/2
DANH MỤC SÁCH THUỘC CHỦ ĐỀ 2
http://localhost/ignitersite1/index.php/sach/nxb/6
DANH MỤC SÁCH THUỘC NXB 6
http://localhost/ignitersite1/index.php/sach/tacgia/9
DANH MỤC SÁCH THUỘC TÁC GIẢ 9
GỢI Ý, ĐÁP ÁN
Tập tin routes.php
Tập tin sach.php
Cách 1:
Cách 2:
Cập nhật lại tập tin routes.php như thế nào cho phù hợp với cách 2?
BÀI 4: CONTROLLER
Mã bài: 22.4
Giới thiệu:
Thành phần quan trọng tiếp nhận và xử lý u cầu chính là controller.
Mục tiêu:
Trình bày khái niệm và cơng dụng của Controller
Tạo được lớp đối tượng kế thừa controller
Tạo các hàm hành động trong controller
Đặt tên tập tin đúng quy định
Nội dung chính:
1. Khái niệm
Controller là một lớp đối tượng được dẫn xuất từ CI_Controller, có chức
năng tiếp nhận và xử lý u cầu được route chuyển đến. Bên trong controller
chứa các hàm (hành động) xử lý theo từng u cầu cụ thể.
Tạo controller
Mỗi controller được định nghĩa trong một tập tin đặt trong thư mục
application/ controllers. Mỗi controller là một lớp đối tượng được dẫn suất
từ CI_Controller.
Cú pháp
defined(‘BASEPATH’) or exit (‘Truy cap trai phep’);
class <TênController> extends CI_Controller{
}
Chú ý: Tên controller phải bắt đầu bằng ký tự In. Tên tập tin giống với tên
controller, có phần mở rộng là .php
Ví dụ:
Định nghĩa controller TacGia trong tập tin application/controllers/TacGia.php
Tạo hàm hành động
Mỗi hàm hành động là một phương thức xử lý bên trong controller.
Ví dụ:
Truy cập theo địa chỉ http://localhost/ignitersite1/index.php/tacgia để xem kết
quả
Tạo thêm các hàm hành động cho controller TacGia như sau:
Tổ chức controller trong thư mục
Với các ứng dụng web lớn, CodeIgniter cho phép nhà phát triển tách/tổ chức
các controller trong thư mục con. Ví dụ: các trang/chức năng quản lý nội dung
được truy cập theo địa chỉ http://localhost/codeignitersite1/quantri
Bước 1: Tạo thư mục application/controllers/quantri
Bước 2: Tạo các controller trong thư mục application/controllers/quantri
CÂU HỎI, BÀI TẬP
4.1. Tạo các controller Chude, Nxb, Sach với các hàm hành động bên trong,
tương tự controller Tacgia đã xây dựng ở trên.
GỢI Ý, ĐÁP ÁN
Tham khảo tập tin controller/Tacgia.php