Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
16,31 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Xuân Thăng XÂY DỰNG NỀN TẢNG HỖ TRỢ LẬP TRÌNH WEB DỰA TRÊN MƠ HÌNH MVC KHỐ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng Nghệ Thông Tin HÀ NỘI - 2010 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Xuân Thăng XÂY DỰNG NỀN TẢNG HỖ TRỢ LẬP TRÌNH WEB DỰA TRÊN MƠ HÌNH MVC KHỐ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin Cán hướng dẫn: TS.Trương Ninh Thuận HÀ NỘI - 2010 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com LỜI CẢM ƠN Lời đầu tiên, xin gửi lời cảm ơn chân thành tới thầy giáo, Tiến sĩ Trương Ninh Thuận, người hướng dẫn bảo tận tình cho tơi suốt q trình học tập thực khóa luận tốt nghiệp Tôi xin cảm ơn thầy, cô giáo dạy suốt thời gian gian học tập trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Cảm ơn bạn Hồng Đình Quang, Nguyễn Văn Vũ, Phan Trọng Khanh, Đàm Thanh Tùng, người bạn tốt giúp đỡ mặt kỹ thuật trình nghiên cứu, xây dựng sản phẩm trình bày khóa luận tốt nghiệp Ngồi ra, tơi muốn gửi lời cám ơn tới bố mẹ, người thân gia đình - người ủng hộ, giúp đỡ động viên tơi suốt q trình học tập qua Cuối cùng, xin gửi lời cám ơn chân thành sâu sắc tới Ban Giám đốc công ty TNHH ISDS tạo điều kiện sở vật chất giúp tơi hồn thành khóa luận LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com TÓM TẮT KHÓA LUẬN Khóa luận tốt nghiệp trình bày số hiểu biết tảng hỗ trợ lập trình ứng dụng web (Web application framework) mơ hình MVC (Model View Controller) vai trò thành phần MVC Web framework Qua giới thiệu framework tự xây dựng ngôn ngữ PHP với ưu điểm cấu trúc tốc độ so với PHP framework Framework đặt tên Hiphop framework Phần khóa luận tập trung giải thích phương thức vận hành ứng dụng xây dựng Hiphop, bước đầu giúp nhà phát triển nắm cách thức xây dựng ứng dụng Hiphop Phần cuối khóa luận giới thiệu thư viện, hàm tích hợp Hiphop hỗ trợ người lập trình trình phát triển ứng dụng LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com MỤC LỤC CHƯƠNG 1: KHÁI NIỆM VỀ WEB APPLICATION FRAMEWORK VÀ MƠ HÌNH MVC 1.1 Web Application Framework gì? 1.2 PHP Framework 1.3 MVC gì? 1.3.1 Lịch sử MVC 1.3.2 Vai trò thành phần M-V-C Web framework 10 CHƯƠNG GIỚI THIỆU FRAMEWORK ĐÃ XÂY DỰNG 15 2.1 Tổng quan framework xây dựng 15 2.2 Kiến trúc Hiphop framework 18 2.2.1 Tổng quát hệ thống thư mục Hiphop framework 18 2.2.2 Các thành phần cốt lõi 19 CHƯƠNG CÁC KHÁI NIỆM BAN ĐẦU KHI XÂY DỰNG ỨNG DỤNG WEB BẰNG HIPHOP FRAMEWORK 25 3.1 Hiphop URLs 25 3.2 Các lớp Controller 25 3.3 View - Template 27 3.4 Các lớp Model 30 CHƯƠNG 4: HỆ THỐNG CÁC LỚP THƯ VIỆN VÀ HÀM HỖ TRỢ 32 4.1 Các lớp thư viện 32 4.1.1 Email library 32 4.1.2 Database library 33 4.1.3 Phân trang với Pagination class 35 4.1.4 Quản lý Session PHP với session class 35 4.1.5 Tạo hình ảnh Captcha với Captcha class 35 4.1.6 Tải file lên server với Upload class 35 4.1.7 Tải file với giao thức FTP - FTP class 35 4.2 Các Helper 38 4.2.1 Array Helper 38 4.2.2 Text Helper 38 4.2.3 URL helper 40 CHƯƠNG 5: ÁP DỤNG HIPHOP FRAMEWORK XÂY DỰNG TRANG BLOG CÁ NHÂN 41 KẾT LUẬN 45 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com DANH SÁCH CÁC HÌNH ẢNH Hình 1: Mơ hình MVC Hình 2: Biểu đồ chuỗi MVC đơn giản Error! Bookmark not defined Hình 1: Mơ hình MVC áp dụng Hiphop frameworkError! Bookmark not defined Hình 2: Cấu trúc thư mục Hiphop framework .Error! Bookmark not defined Hình 3: Quy trình xử lý HTTP request - Hiphop frameworkError! Bookmark not defined Hình 4: Mô cấu trúc thành phần cốt lõi Hiphop framework Error! Bookmark not defined Hình 5: Lớp Registry 20 Hình 6: Lớp Router .21 Hình 7: Lớp Output .21 Hình 8: Lớp Loader 21 Hình 9: Lớp Controller 22 Hình 1: Ví dụ URL Hiphop framework Error! Bookmark not defined Hình 2: Minh họa Sơ đồ phân cấp controller trang webError! Bookmark not defined Hình 3: blogview.php Error! Bookmark not defined Hình 3.4: header_view.php Error! Bookmark not defined Hình 1: Giao diện Blog 41 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com LỜI MỞ ĐẦU Trong năm gần đây, ứng dụng web lớn liên tục tạo ra, đánh dấu bước phát triển nhảy vọt công nghệ giới lập trình Các tảng hộ trợ lập trình xây dựng hàng loạt nhằm mục đích cải thiện tốc độ thực thi nâng cao tính bảo mật cho ứng dụng web Các tảng hỗ trợ lập trình ứng dụng (application framework) chứa đựng kinh nghiệm nhà kiến trúc phần mềm sau nhiều năm chiêm nghiệm giới lập trình Với nỗ lực làm giảm thời gian phát triển ứng dụng web, việc học hỏi tiếp thu ưu điểm framework nay, xây dựng tảng hỗ trợ lập trình ứng dụng web viết ngơn ngữ PHP Khóa luận trình bày khái niệm cần thiết trước bắt tay xây dựng tảng lập trình, đồng thời giới thiệu tảng mà xây dựng thành công LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com CHƯƠNG 1: KHÁI NIỆM VỀ WEB APPLICATION FRAMEWORK VÀ MƠ HÌNH MVC 1.1 Web Application Framework gì? “Web application framework” tảng phần mềm thiết kế để hỗ trợ việc phát triển website động, ứng dụng web dịch vụ web Mục đích Framework nhắm tới việc giảm bớt hao phí liên quan tới hoạt động thực trình phát triển web Ví dụ, nhiều framework cung cấp thư viện để truy cập sở liệu, khung khuôn mẫu quản lý phiên làm việc, thêm vào làm tăng khả tái sử dụng mã 1.2 PHP Framework PHP framework web framework viết PHP - ngôn ngữ lập trình nguồn mở phổ biến Nội dung khóa luận đề cập tới PHP Framework PHP ngôn ngữ linh hoạt, lập trình viên ưa chuộng sử dụng tiến hành xây dựng ứng dụng web cỡ lớn (Facebook, Flickr, Twitter…) Bên cạnh PHP có cộng đồng sử dụng lớn, ln biết hỗ trợ lần Nhưng tính linh hoạt, dễ học, dễ sử dụng PHP đơi làm lập trình viên chủ quan, thường ý tới việc ứng dụng chạy hay khơng mà khơng quan tâm tới tính sáng sủa việc tổ chức mã phục vụ cho mục đích bảo trì dài lâu Chưa kể tới việc vấn đề an toàn, bảo mật cho ứng dụng web ngày bị xem nhẹ Đây lúc họ cần tới PHP framework Sự có mặt PHP framework làm cho việc phát triển ứng dụng web trở nên trôi chảy việc cung cấp cấu trúc để xây dựng ứng dụng Hay nói cách khác, PHP Framework giúp đỡ lập trình viên thúc đẩy nhanh chóng q trình phát triển ứng dụng, tiết kiệm phần lớn thời gian, tăng ổn định cho ứng dụng, đặc biệt giảm thiểu số lần phải viết lại mã Không thể, framework cịn đặc biệt hữu ích với lập trình viên kinh nghiệm, giúp họ xây dựng ứng dụng mang tính chuẩn hóa nhờ việc tương tác xác việc xử lý sở liệu (database), mã PHP giao diện (HTML) cách riêng biệt Các PHP framework hầu hết cung cấp sẵn module tảng cần thiết thư viện mã lệnh chuẩn (kết nối database, quản lý session, template engine…) để xây dựng ứng dụng LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Ý tưởng chung đằng sau kiến trúc PHP Framework kể đến mơ hình MVC Một mơ hình khơng mang lại nhiều cảm hứng cho chuyên gia lập trình nhiều năm qua Chúng ta tìm hiểu khái niệm đặc điểm mơ hình M-V-C 1.3 MVC gì? MVC chữ viết tắt Model-View-Controller, mẫu kiến trúc (architectural pattern) tạo nhằm giải vấn đề phát sinh giải pháp tổ chức mã trình phát triển phần mềm Khi sử dụng cách, mẫu MVC giúp cho người phát triển phần mềm cô lập nguyên tắc nghiệp vụ giao diện người dùng cách rõ ràng Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bảo trì nguyên tắc xử lý nghiệp vụ giao diện có liên quan với 1.3.1 Lịch sử MVC Bắt đầu vào năm 70 kỷ 20, phịng thí nghiệm Xerox PARC Palo Alto Sự đời giao diện đồ họa (Graphical User Interface) lập trình hướng đối tượng (Object Oriented Programming) cho phép lập trình viên làm việc với thành phần đồ họa đối tượng đồ họa có thuộc tính phương thức riêng Khơng dừng lại đó, nhà nghiên cứu Xerox PARC xa cho đời gọi kiến trúc MVC (viết tắt Model – View – Controller) Kiến trúc MVC ứng dụng để xây dựng nhiều thư viện đồ họa khác Tiêu biểu thư viện đồ họa ngơn ngữ lập trình hướng đối tượng SmallTalk (cũng Xerox PARC nghiên cứu phát triển vào thập niên 70 kỷ 20) Ngày nay, nhiều tảng lập trình thấy có mặt mơ hình MVC, kể đến: + Swing Components Java + Document View Architecture Microsoft Visual C++ (VC++) + QT4(KDE) + Apple’s Cocoa (Core Data) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 1.3.2 Vai trò thành phần M-V-C Web framework Hình 1.0.1 Mơ hình MVC a C - Controller Controller lớp điều khiển luồng ứng dụng, tiếp nhận u cầu người dùng thơng qua HTTP header, sau chuyển tiếp đến lớp phụ trách trực tiếp xử lý yêu cầu Tùy theo cách thiết kế lớp mà thường thấy Controller gồm: + Front Controller Là controller xử lý tất yêu cầu người dùng cho website Fron Controller có nhiệm vụ hợp tất xử lý yêu cầu vào kênh yêu cầu thông qua đối tượng + Dispatcher: Lớp điều phối hướng điều khiển mức cao + Request: xử lý phần liệu đầu vào mức GET, POST + Session: xử lý phần liệu đầu vào mức SESSION Tùy theo liệu đầu vào, Controller thực phép lọc (với dịch vụ lấy từ Model), tính tốn lựa chọn (Action Mapping) dựa kiến trúc cấu hình nhằm xác định thành phần lớp thực yêu cầu người dùng Hiểu cách đơn giản, Controller thành phần trung gian View Model Nó nhận liệu nhập vào qua View, sau gọi Model tương ứng lấy kết trả từ Model Tiếp theo, View thích hợp lựa chọn Controller chuyển tiếp liệu vào view để xử lý Một số hoạt động thường thấy Controller: Tạo form, gửi tin nhắn đến form để yêu cầu kiểm tra liệu 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com CHƯƠNG 4: HỆ THỐNG CÁC LỚP THƯ VIỆN VÀ HÀM HỖ TRỢ - LIBRARY & HELPER Hệ thống lớp thư viện hàm hỗ trợ Hiphop giúp lập trình viên thao tác việc xây dựng ứng dụng nhanh hiệu Chương giới thiệu đầy đủ lớp thư viện (library) hàm trợ giúp Hiphop cách thức sử dụng chúng trình xây dựng ứng dụng 4.1 Các lớp thư viện 4.1.1 Email library Là công cụ mạnh mẽ giúp đơn giản hóa việc gửi email Lớp thư viện Email hỗ trợ tính sau đây: Hỗ trợ đa giao thức: Mail, Sendmail SMTP CC and BCCs Email dạng chữ (text) HTML Hỗ trợ gửi file đính kèm Sau ví dụ minh họa việc gửi mail Hiphop dễ dàng $this->load->library('email'); //Cấu hình việc gửi email $config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = TRUE; $this->email->initialize($config); $this->email->setFrom('your@example.com', 'Your Name'); $this->email->setTo('someone@example.com'); $this->email->setCC('cc@example-mail-box.com'); $this->email->setBCC('bcc@ example-mail-box.com'); $this->email->setSubject('Testing email class'); 32 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com $this->email->setMessage('Testing the email class.'); $this->email->send(); Với trường hợp gửi tới nhiều địa mail, cần làm đoạn code sau: $list = array('one@example.com', 'two@example.com', 'three@example.com'); $this->email->to($list); Hàm $this->email->attach() giúp gửi file đính kèm Đặt đường dẫn file đính kèm tham số hàm: $this->email->attach('/path/to/photo1.jpg'); $this->email->attach('/path/to/photo2.jpg'); $this->email->attach('/path/to/photo3.jpg'); $this->email->send(); 4.1.2 Database library Trước làm việc với thư viện này, cần thiết đặt thông số kết nối username, password, tên database file system/config/database.php theo mẫu sau: $currentConnection = 'default'; $db['default']['hostname'] $db['default']['username'] $db['default']['password'] $db['default']['database'] $db['default']['dbdriver'] = = = = = "localhost"; "root"; ""; "database_name_1"; "mysql"; Lý mảng $db phải dạng hai chiều có liên quan tới tính hỗ trợ nhiều kết nối tới nhiều sở liệu Hiphop framework Ví dụ, ứng dụng bạn cần tới kết nối tới database khác, cần thêm thiết đặt sau vào file database.php bên trên: $db['test']['hostname'] $db['test']['username'] $db['test']['password'] $db['test']['database'] $db['test']['dbdriver'] = = = = = "localhost"; "root"; ""; "database_name_2"; "mysql"; “Test” tên ngẫu nhiên ta đặt cho kết nối thứ hai Tương tự định nghĩa kết nối khác cách dễ dàng Theo mặc định, sau câu lệnh: $this->load->database(); thưc hiện, kết nối default mặc định nạp vào controller (cụ thể biến $this->db Controller) 33 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Sau nạp kết nối database, dùng phương thức lớp Database để tương tác với database qua kết nối a escape() Tự động thêm ký tự nháy đơn (‘) cho tham số hàm Hàm đặc biệt hữu ích việc viết câu truy vấn an toàn nhằm tránh lỗi SQL Injection $sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")"; b query() $query = $this->db->query('YOUR QUERY’); Hàm query() trả đối tượng kết database Khi câu lệnh Query có kiểu “Đọc” (SELECT), trả đối tượng dùng hàm result_array(), num_rows()… Khi câu lệnh query kiểu “Ghi” (UPDATE, DELETE, INSERT), trả TRUE FALSE tương ứng với trạng thái thành công hay thất bị câu truy vấn c.result_array Trả kết truy vấn dạng mảng, mảng rỗng khơng có kết tìm thấy câu truy vấn Hàm thường sử dụng câu lệnh lặp: $query = $this->db->query("YOUR QUERY"); foreach { echo echo echo } ($query->result_array as $row) $row['title']; $row['name']; $row['body']; d.num_rows Hàm trả lại số dòng kết câu truy vấn $query = $this->db->query('SELECT * FROM my_table'); echo $query->num_rows; e.row($param) 34 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hàm trả hàng kết câu truy vấn Tham số hàm thứ tự hàng lấy, hàm không chứa tham số, mặc định hàng truy vấn trả $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { $row = $query->row(); echo $row['title']; echo $row['name']; echo $row['body']; } 4.1.3 Phân trang với Pagination class « First < > Last » Giả sử bạn muốn tạo liên kết để chuyển hướng trang bạn sang trang khác trên, cần làm theo ví dụ sau: $page = $this->get['page']; $this->load->library('pagination'); $config['total’] = '200'; $config['limit'] = '20'; $config['page'] = $page; $config[‘style_links’] = ‘css_class_links’; $config['$style_results'] = 'css_class_results'; $config['url'] = site_url('home/listEntry&page=%s’); //Khởi tạo giá trị thiết đặt để tạo link phân trang $this->pagination->initialize($config); echo $this->pagination->createNavigation(); 4.1.4 Quản lý session PHP với session class Để sử dụng thư viện này, cần nạp vào controller đoạn mã sau: $this->load->library(‘session’); Dùng hàm set(), get() để tạo session lấy giá trị session: $this->session->set(‘name_session_1’, ‘gia_tri_session_1’); 35 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com $this->session->set(‘name_session_1’, ‘gia_tri_session_1’); 4.1.5 Tạo ảnh Captcha ngặn chặn chương trình tự động Để sử dụng, cần nạp thư viện vào Controller đoạn mã sau: $this->load->library(‘captcha’); Các hàm sử dụng: a getCode() Khi thư viện captcha nạp, tự động sinh chuỗi ký tự ngẫu nhiên Bạn dùng hàm để lấy chuỗi ngẫu nhiên đó, phục vụ cho mục đích kiểm tra chuỗi số nhập vào người dùng có có trùng với chuỗi ngẫu nhiên dc sinh hay không $this->session->set('captcha') = $this->captcha->getCode(); b showImage() Hiển thị ảnh captcha cho người dùng: $this->captcha->showImage(); 4.1.6 Tải file lên server với Upload class Việc upload file server thực dễ dàng với thư viện upload Hiphop framework $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '1000'; $config['max_width'] = '800'; $config['max_height'] = '600'; $this->load->library('upload', $config); $this->upload->do_upload(); Để lấy thông tin trả file upload, cần gọi hàm: $this->upload->data(); Những thông tin dạng mảng (array), bao gồm thông tin ví dụ sau: Array 36 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ( [file_name] => [file_type] => [file_path] => [orig_name] => [file_extension] [file_size] => [image_width] => [image_height] => [image_type] => your_pic.jpg image/jpeg /path/to/your/upload/ mypic.jpg => jpg 22.2 800 600 jpeg ) 4.1.7 Tải file với giao thức FTP - FTP class Như cách sử dụng thư viện thông thường, để sử dụng FTP class, bạn cần thêm hàm sau Controller: $this->load->library(‘ftp’); Sau nạp, biến $this->ftp chứa toàn đối tượng FTP khởi tạo từ FTP class Các hàm sẵn có: a $this->ftp->connect() Kết nối đăng nhập vào server với thông tin đăng nhập Hàm phải dùng muốn làm việc với server qua giao thức FTP $config['hostname'] = 'ftp.example.com'; $config['username'] = 'your-username'; $config['password'] = 'your-password'; $config['port'] = 21; $config['passive'] = FALSE; $config['debug'] = TRUE; $this->ftp->connect($config); b $this->ftp->chmod() Thiết đặt quyền hạn cho file thư mục server Ví dụ: $this->ftp->chmod(‘/public_html/’, 777); c $this->ftp->list_files() 37 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Liệt kê danh sách file có thư mục server Ví dụ: $list = $this->ftp->list_files('/public_html/'); d $this->ftp->close() Đóng kết nối tới máy chủ, sử dụng hồn thành cơng việc cần làm với kết nối FTP vừa tạo 4.2 Các Helper 4.2.1 Array Helper Nằm file system/helpers/array_helper.php Bao gồm hàm có chức hỗ trợ làm việc, xử lý mảng Để sử dụng hàm file này, cần dòng khai báo sau Controller: $this->load->helper(‘array’); Các hàm sử dụng: a element() Cho phép nạp thêm phần tử vào mảng, hàm kiểm tra xem có số mảng ko giá trị tương ứng Nếu giá trị tồn trả lại giá trị đó, giá trị ko tồn trả lại giá trị false, bạn có xác định giá trị mặc định qua ba biến Ví dụ: $array = array('color' => 'red', 'shape' => 'round', 'size' => ''); echo element('color', $array); // returns "red" echo element('size', $array, NULL); // returns NULL b.random_element() Trả giá trị ngẫu nhiên mảng $ran = array(‘1’, ‘2’, ‘4’); echo random_element($ran); 4.2.2 Text Helper Bao gồm hàm hỗ trợ làm việc với text 38 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Sử dụng lệnh sau Controller để load Text Helper: $this->load->helper(‘text’); Các hàm sử dụng: a word_cutter() Cắt xén xâu từ với độ dài mong muốn Ví dụ: $string = "UET is the only Vietnamese university having one among the best 100 students"; $string = word_cutter($string, 4); // Returns: UET is the only… Tham số thứ ba hậu tố thêm vào string, mặc định dấu(3 chấm) … b character_cutter() Cắt xâu thành ký tự có độ dài xác định Hàm đảm bảo tồn vẹn từ nên số ký tự xâu kết sai số khơng đáng kể Ví dụ: $string = "UET is the only Vietnamese university having one among the best 100 students"; $string = character_cutter($string, 20); // Returns: UET is the only Vietnamese … Tham số thứ ba hậu tố thêm vào xâu, khơng khai báo helper mặc định dấu … c highlight_code() Tô màu xâu ký tự $tring = highlight_code($string); Hàm sử dụng hàm highlight_string() PHP, màu sử dụng xác định file php.ini d highlight_phrase() Sẽ highlight cụm từ xâu text, tham số xác định string, tham số thứ hai cụm muốn highlight, tham số thứ ba tham số thứ tư thẻ html mở đóng màu bạn muốn 39 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com e create_slug() Khi dùng hàm với tham số chuỗi string, chuỗi sinh ra, nối với dấu “-” $title = "Cộng hòa xã hội chủ nghĩa Việt Nam?"; $url_title = url_title($title); // Kết quả: cong-hoa-xa-hoi-chu-nghia-viet-nam Hàm hữu ích việc tạo URL thân thiện với máy tìm kiếm Chẳng hạn: http://yoursite.com/index.php?route=blog/entry/123/gioi-thieu 4.2.3 URL helper Bao gồm hàm hỗ trợ làm việc với url a site_url() Ví dụ $this->load->helper('url'); echo site_url("blog/entry/123"); $segments = array(blog, entry, '123'); echo site_url($segments); Cả hai cách làm đưa kết url: yoursite.com/index.php?route=blog/entry/123 b uri_string() Khi dùng hàm trang ứng dụng, kết nhận chuỗi segment trang Với url: http://yoursite.com/index.php?route=blog/entry/123 Hàm trả chuỗi: blog/entry/123 c.get_segment($order) Trả segment ứng với thứ tự tham số $order URL http://yoursite.com/index.php?route=blog/entry/123 Hàm get_segment(2) trả chuỗi: entry 40 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com CHƯƠNG 5: ÁP DỤNG HIPHOP FRAMEWORK XÂY DỰNG TRANG BLOG CÁ NHÂN Yêu cầu: Xây dựng trang blog cá nhân có chức năng, thiết kế, giao diện hình vẽ Nội dung tiêu đề viết lấy database Hình 5.0.1Giao diện Blog Bước Xác định URL Url có dạng: 41 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com yourblog.com/index.php?route=home/index Bước Xác định phân cấp Controller Home Header Menu RightBar Footer MostViewBox ContactBox Bằng cách nhìn nhận trang web thành thành phần riêng rẽ, ta xác định phân cấp Controller ví dụ này, từ xây dựng Controller class cho hợp lý Controller gốc: Home (hàm có hàm index) Controller cấp 1: Header, Right_Bar, Footer Controller cấp 2: Menu (con Header), MostViewBox ContactBox (con RightBar) Tương ứng với controller view (template) tương ứng chúng Bước 3: Xác định Model Controller Home cần liệt kê danh sách viết lấy từ database hiển thị trang chủ Ta cần model để đảm nhiệm việc truy xuất liệu database Model cần có phương thức sau để đáp ứng phù hợp với yêu cầu gửi tới từ Controller getLastestEntry(): lấy danh sách 10 entry nhất, trả Controller Home getMostViewEntry(): lấy danh sách xem nhiều nhất, trả cho Controller MostViewBox Bước 4: Viết mã 42 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Như nói trên, class liên quan tới ứng dụng lập trình viên triển khai phải đặt thư mục system/application Các lớp Controller, Model, View cần đặt vào thư mục tương ứng Ví dụ việc viết mã cho lớp Home Controller: class Home extends Controller { function construct() { parent:: construct(); } function index() { $this->children = array("header",’footer’, right_bar); $this->load->model('home_model', 'homeModel'); $this->data[‘entries’] = $this->homeModel-> getLastestEntry(); $this->template = "home_view”; $this->render(TRUE); } } View cho Controller: 43 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tương tự ta phát triển tiếp controller khác Kết cuối cùng: Site blog cá nhân tạo thời gian 30 phút (không kể thời gian thiết kế HTML) với đặc điểm: Tốc độ tải trang nhanh Mã đặt vào thư mục system/application, tương lai dễ dàng thêm tính nâng cao để làm blog thêm phong phú 44 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com KẾT LUẬN Nội dung khóa luận trình bày khái niệm Web framework, mơ tả chi tiết chức thành phần mơ hình MVC Web framework Kết khóa luận là: 1- Hiểu rõ khái niệm Web application framework Nắm rõ mơ hình MVC vai trị thành phần Web framework 2- Từ mơ hình MVC chúng tơi xây dựng framework viết PHP hồn tồn (có nhiều ưu điểm so với PHP Framework khác) – đặt tên Hiphop framework Qua khóa luận giới thiệu cách thức sử dụng vận hành ứng dụng viết Hiphop framework Hướng nghiên cứu đánh giá lại mã nguồn Hiphop framework, tốc độ thực thi mức độ áp dụng cơng nghệ PHP5 Bên cạnh đó, triển khai xây dựng thêm nhiều lớp thư viện và hàm hỗ trợ nhằm cung cấp cho lập trình viên công cụ xây dựng ứng dụng web mạnh mẽ hơn, phong phú 45 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com TÀI LIỆU THAM KHẢO [1] Thomas Mayer, “Professional CodeIgniter”, 2006 [2] Phạm Cơng Định, “Mơ hình MVC vai trò thành phần Web framework” 2009 [3] David Upton, “CodeIgniter For Rapid PHP Application Development”, 2006 [4] Kevin McArthur, “Pro PHP Patterns Frameworks Testing and More”, Mar.2008 [5] Jason Gilmore, “Apress Beginning PHP and MySQL From Novice to Professional” Appress, 2nd Edition Jan 2006 [6] Mehdi Achour, Friedhelm Betz, Antony Dovgal, Nuno Lopes, Hannes Magnusson “PHP Manual” www.php.net 2010 [7] Gutmans Frontmatter, “PHP Power Programming” 2010 46 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... vọt cơng nghệ giới lập trình Các tảng hộ trợ lập trình xây dựng hàng loạt nhằm mục đích cải thiện tốc độ thực thi nâng cao tính bảo mật cho ứng dụng web Các tảng hỗ trợ lập trình ứng dụng (application... nghiệp trình bày số hiểu biết tảng hỗ trợ lập trình ứng dụng web (Web application framework) mơ hình MVC (Model View Controller) vai trò thành phần MVC Web framework Qua giới thiệu framework tự xây. ..ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Xuân Thăng XÂY DỰNG NỀN TẢNG HỖ TRỢ LẬP TRÌNH WEB DỰA TRÊN MƠ HÌNH MVC KHỐ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng Nghệ Thông