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) gồm có 7 đơn vị bài học, 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.
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 chức 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á chuyên 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, 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: http://codeigniter.com/userguide3/overview/features.html) 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? 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 BÀI 5: VIEW Mã bài: 22.5 Giới thiệu: View là một trong những thành phần trong mơ hình MVC, cơng dụng chính là trao đổi dữ liệu với controller và hiển thị kết quả Mục tiêu: Biết khái niệm và cơng dụng của view Thiết kế được view và tải view trong các hàm controller Truyền dữ liệu từ controller đến view Truyền dữ liệu từ view đến controller thơng qua form Xử lý dữ liệu nhận được từ form Đảm bảo an tồn cho người và thiết bị Nội dung chính: Khái niệm View đơn giản là một trang web hoặc một một chức năng (header, footer, sidebar) đặt bên trong một view khác View không gọi trực tiếp, phải tải lệnh bên trong controller Tạo view Phân tích giao diện trang web theo hình ảnh ví dụ bên dưới Trong một website có nhiều trang. Hầu như các trang đề có bố cục, chức năng giống nhau, chỉ khác nhau về nội dung được hiển thị trên vùng rộng lớn nhất. Xét giao diện trên, tài liệu HTML đơn giản có thể như sau: 2.1. Tạo view dùng chung Các trang đều có bố cục và nội dung giống nhau trong hai thành phần (đã được đánh dấu trong các khung chữ nhật). Chúng ta lần lượt tạo các view tương ứng Bước 1: Tạo thư mục application/views/shared Bước 2: Tạo tập tin application/views/shared/p1.php Bước 3: Tạo tập tin application/views/shared/p2.php 2.2. Tạo view nội dung cho các trang Quy tắc chung: Với mỗi controller, chúng ta sẽ tạo một thư mục đặt bên trong application/views. Tiếp theo, chúng ta sẽ tạo các view đặt bên trong thư mục vừ tạo. Xét controller TacGia trong mục 3 bài trước, chúng ta có các hàm index, add và edit lần lượt là các trang Danh sách tác giả, Thêm tác giả và Sửa thơng tin tác giả Bước 1: Tạo thư mục application/views/tacgia Bước 2: Tạo tập tin application/views/tacgia/index.php để hiển thị nội dung cho hàm index Lặp lại Bước 2 để tạo các tập tin hiển thị nội dung cho các hàm add và edit Tải view Cập nhật hàm index trong controller TacGia để tải các view shared/p1.php, shared/p2.php và tacgia/index.php Tương tự như vậy, cập nhật các hàm _new và edit Kiểm tra kết quả các trang theo địa chỉ lần lượt http://localhost/ignitersite1/index.php/tacgia http://localhost/ignitersite1/index.php/tacgia/add http://localhost/ignitersite1/index.php/tacgia/edit/1 Truyền dữ liệu đến view Trong ví dụ bên dưới, chúng ta sẽ truyền danh sách tác giả từ hàm index đến view application/views/tacgia/index.php. Hiện tại, chúng ta chưa truy cập đến CSDL nên sẽ chúng ta sẽ tạo dữ liệu thử dưới dạng mảng Bước 1: Truyền dữ liệu đến view. Để truyền dữ liệu vào cho view, chúng ta chỉ cần đặt dữ liệu vào tham số thứ hai của hàm load->view Bước 2: Xử lý dữ liệu nhận được trên view Cập nhật nội dung tập tin application/views/tacgia/index.php Kết có http://localhost/ignitersite1/index.php/tacgia truy cập địa chỉ Form trên view Bước 1: Cập nhật hàm add trong controller TacGia Bước 2: Tạo tập tin application/views/tacgia/add.php form_open(‘tacgia/store’): tạo thẻ form có thuộc tính method= “post” và action= “/index.php/tacgia/store” (dữ liệu sẽ được chuyển đến hàm store của controller TacGia) Bước 3: Cập nhật hàm store trong controller TacGia Kiểm tra kết quả: mở trang http://localhost/ignitersite1/index.php/tacgia/add. Khơng nhập tên, click chuột lên nút Submit Lỗi Tiếp tục mở lại trang http://localhost/ignitersite1/index.php/tacgia/add. Nhập tên, click chuột lên nút Submit Thành cơng CÂU HỎI, BÀI TẬP 5.1. Tạo/cập nhật các controller và view tương ứng để có các trang hiển thị Danh sách chủ để, Danh sách NXB (Tạo dữ liệu thử dưới dạng mảng) 5.2. Tạo/cập nhật các controller và view tương ứng để có các trang chứa form cho phép nhập thông tin Chủ đề, NXB, Tác giả (chưa cần ghi vào CSDL) BÀI 6: MODEL Mã bài: 22.6 Giới thiệu: Model là đối tượng chứa dữ liệu trao đổi giữa controller và view Mục tiêu: Trình bày khái niệm và cơng dụng của Model Tạo model Tải model trong controller Truyền dữ liệu từ model đến view Viết các hàm truy xuất CSDL trong model Đặt tên hàm đúng quy tắc Đảm bảo an tồn cho người và thiết bị Nội dung chính: Khái niệm Model lớp đối tượng truy xuất CSDL Ví dụ: để có thể đọc/thêm/xóa/sửa liệu trên table TacGia, chúng ta cần tạo model. Trong CodeIgniter, model lớp đối tượng dẫn xuất từ CI_Model. Mỗi model được định nghĩa trong một tập tin, đặt trong thư mục application/models Tạo model Tạo tập tin application/models/tacgia_model.php để định nghĩa một lớp đối tượng tacgia_model là một model, thực hiện việc đọc/thêm/xóa/sửa dữ liệu trên table TacGia Định nghĩa các hàm trong model 3.1. Cập nhật hàm GetList (Đọc nhiều dịng dữ liệu) 3.2. Cập nhật hàm GetEntry (Đọc một dịng dữ liệu theo khóa) 3.3. Cập nhật hàm Insert (Thêm một dịng dữ liệu) 3.4. Cập nhật hàm Update (Cập nhật một dịng dữ liệu) 3.5. Cập nhật hàm Delete (Xóa một dịng dữ liệu) Truy xuất CSDL thơng qua model trong controller Cập nhật tập tin application/controllers/tacgia.php 4.1. Thêm hàm khởi tạo load->helper: tải thư viện chứa các hàm hỗ trợ đọc nhanh các thơng tin url, uri, … Có thể mở tập tin system/helpers/url_helper.php xem các hàm bên trong load->database: tải thư viện hỗ trợ truy xuất CSDL load->model: tải lớp đối tượng model 4.2. Cập nhật hàm index 4.3. Cập nhật tập tin application/views/tacgia/index.php CÂU HỎI, BÀI TẬP 6.1. Tạo các model cịn lại tương ứng với các table trong CSDL bookstore, tương tự tacgia_model đã thực hiện trong bài GỢI Ý, ĐÁP ÁN Tham khảo tập tin models/tacgia_model.php BÀI 7: HỒN CHỈNH CONTROLLER/VIEW Mã bài: 22.7 Giới thiệu: Ba thành phần trong mơ hình MVC phối hợp với nhau như thế nào sẽ được trình bày cụ thể và rõ ràng trong bài này Mục tiêu: Biết quy trình truy xuất CSDL trong controller Biết quy trình truyền dữ liệu đến view Tạo các trang truy xuất CSDL Đặt tên tập tin đúng quy tắc Đảm bảo an tồn cho người và thiết bị Nội dung chính: Thêm dữ liệu Cập nhật hàm store torng controller TacGia Cập nhật dữ liệu Bước 1: Cập nhật tập tin application/views/tacgia/index.php Truy cập địa chỉ http://localhost/ignitersite1/index.php/tacgia để xem kết quả Bước 2: Cập nhật hàm edit trong controller TacGia Bước 3: Tạo tập tin application/views/tacgia/edit.php Bước 4: Cập nhật hàm update tron controller TacGia Xóa dữ liệu Cập nhật hàm delete trong controller TacGia CÂU HỎI, BÀI TẬP 7.1. Hồn chỉnh controller, view để có các trang danh sách/thêm/xóa/sửa dữ liệu trong bảng ChuDe 7.2. Hồn chỉnh controller, view để có các trang danh sách/thêm/xóa/sửa dữ liệu trong bảng NXB 7.3. Hồn chỉnh controller, view để có các trang danh sách/thêm/xóa/sửa dữ liệu trong bảng Sach TÀI LIỆU THAM KHẢO http://codeigniter.com ... 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... 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... đó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