Lập trình web - Chương 4: Hàm

pdf 58 trang vanle 2270
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình web - Chương 4: Hàm", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdflap_trinh_web_chuong_4_ham.pdf

Nội dung text: Lập trình web - Chương 4: Hàm

  1. CHƯƠNG 4: HÀM 3.1 GIỚI THIỆU VỀ HÀM 3.2 CÁC HÀM XÂY DỰNG SẴN 3.3 HÀM TỰ TẠO 3.4 CÁCH GỌI HÀM 28/06/2014 Lập trình Web 1
  2. 3.1. GIỚI THIỆU VỀ HÀM Khái niệm hàm Phân loại hàm 28/06/2014 Lập trình Web 2
  3. Khái niệm hàm Hàm dùng để thực hiện một công việc nào đó. Chẳng hạn như: lấy ngày tháng của hệ thống, kết nối tới CSDL, thông báo lỗi, Tất cả các hàm trong php đều có dạng cơ bản sau: Tên_hàm([Đối số]) Trong đó:  Đối số: Tùy thuộc vào các hàm khác nhau mà có thể có một hoặc nhiều đối số hoặc không có đối số.  Cần nắm được kết quả trả về của hàm  Hàm chỉ được thực thi khi có lời gọi hàm  Có thể gọi hàm ở bất kỳ đâu trong trang 28/06/2014 Lập trình Web 3
  4. Phân loại hàm Hàm trong php được phân làm hai loại Các hàm xây dựng sẵn: Là các hàm dùng để thực hiện các chức năng cơ bản của php Các hàm do người dùng tự định nghĩa: được xây dựng trong quá trình viết code 28/06/2014 Lập trình Web 4
  5. 3.2 CÁC HÀM XÂY DỰNG SẴN Các hàm ngày giờ Các hàm thao tác với MySQL Các hàm thao tác với file Các hàm lọc filter Các hàm thông báo lỗi Các hàm xử lý ngoại lệ 28/06/2014 Lập trình Web 5
  6. Các hàm ngày giờ Dùng để lấy hoặc thiết lập ngày tháng trên Server Một số hàm ngày giờ cơ bản: Hàm date() Hàm time() Hàm getdate() Hàm checkdate() Hàm mktime() 28/06/2014 Lập trình Web 6
  7. Hàm date() Trả về ngày, giờ dựa trên ngày giờ của Server theo định dạng chỉ ra. Cú pháp: date(format, [timestamp]) Trong đó: Format: Là ký tự định dạng đầu ra của ngày, giờ timestamp: Tùy chọn 28/06/2014 Lập trình Web 7
  8. Hàm date() Một số ký tự định dạng: a: am hoặc pm A: AM hoặc PM B: mẫu giờ Internet d: ngày của tháng (01 31) D: ngày của tuần (Mon Sun) F: Tháng có tên đầy đủ (January December) g: giờ (1 12) G: giờ (0 23) h: giờ (01 12) H: giờ (00 23) i: phút (00 59) 28/06/2014 Lập trình Web 8
  9. Hàm date() j: ngày của tháng (1 31) l: ngày của tuần (Monday Sunday) L: kiểm tra năm nhuận (1: nếu năm nhuận, 0: ngược lại) m: tháng (01 12) M: tháng (Jan Dec) n: tháng (1 12) s: giây (00 59) S: hậu tố thứ tự của tiếng anh (st, nd, rd, th) t: số ngày của tháng (28 30) T: thiết lập timezone của máy w: ngày của tuần dạng số (0: Sunday, , 6: Saturday) Y: năm 4 số (2009) y: năm 2 số (09) z: ngày của năm (0 365) 28/06/2014 Lập trình Web 9
  10. Hàm date() Ví dụ 1: VI DU VE HAM DATE() "); echo(date("l dS \of F Y h:i:s A") . " "); echo("Oct 3,1975 was on a ".date("l", mktime(0,0,0,10,3,1975))." "); ?> 28/06/2014 Lập trình Web 10
  11. Hàm date() Ví dụ 2: 28/06/2014 Lập trình Web 11
  12. Hàm time() Trả về số giây đã qua tính từ 00:00:00 GMT ngày 1/1/1970 Cú pháp: time() Ví dụ: VI DU VE HAM TIME() "); echo(date("D F d Y",$t)); ?> 28/06/2014 Lập trình Web 12
  13. Hàm getdate() Trả về một mảng gồm các phần tử như sau: [seconds] – Giây [minutes] - phút [hours] - giờ [mday] – ngày của tháng [wday] – ngày của tuần [year] - năm [yday] – ngày của năm [weekday] – tên của thứ trong tuần [month] – tên của tháng Cú pháp: getdate() 28/06/2014 Lập trình Web 13
  14. Hàm getdate() Ví dụ: VI DU HAM GETDATE() 28/06/2014 Lập trình Web 14
  15. Hàm checkdate() Dùng để kiểm tra ngày, tháng, năm nào đó có hợp lệ không. Nếu có trả về true, ngược lại trả về false Cú pháp: checkdate(month, day, year) Ví dụ: Vi du ham checkdate() 28/06/2014 Lập trình Web 15
  16. Hàm mktime() Dùng để tính toán ngày hợp lệ. Cú pháp: mktime(hour, minute, second, month, day, year) Ví dụ: Vi du ham mktime() "); echo(date("M-d-Y",mktime(0,0,0,14,1,2001))." "); echo(date("M-d-Y",mktime(0,0,0,1,1,2001))." "); echo(date("M-d-Y",mktime(0,0,0,1,1,99))." "); ?> 28/06/2014 Lập trình Web 16
  17. Các hàm thao tác với MySQL Dùng để mở hoặc hủy kết nối, thao tác với CSDL MySQL Một số hàm cơ bản: Hàm mysql_connect() Hàm mysql_close() Hàm mysql_pconnect() Hàm mysql_select_db() Hàm mysql_querry() 28/06/2014 Lập trình Web 17
  18. Hàm mysql_connect() Dùng để mở kết nối tới CSDL chủ MySQL Cú pháp: mysql_connect(server, user, pwd) Ví dụ: Thực hiện kết nối tới máy cục bộ bằng tài khoản mysql_user và password là mysql_pwd Có thể dùng địa chỉ ip thay cho tên server: 28/06/2014 Lập trình Web 18
  19. Hàm mysql_close() Dùng để đóng kết nối tới CSDL MySQL Cú pháp: mysql_close(connection) Ví dụ: 28/06/2014 Lập trình Web 19
  20. Hàm mysql_pconnect() Cũng giống như hàm mysql_connect() nhưng có điểm khác. Tìm kết nối đã được mở trên cùng host, user, pass. Nếu một kết nối được tìm thấy thì nó sẽ không mở thêm kết nối mới Liên kết với MySQL không đóng khi mã thực thi kết thúc Cú pháp: mysql_pconnect(server, user, pwd) 28/06/2014 Lập trình Web 20
  21. Hàm mysql_select_db() Dùng để chuyển từ CSDL này qua CSDL khác Cú pháp: mysql_select_db(database, [connection]) Ví dụ: 28/06/2014 Lập trình Web 21
  22. Hàm mysql_querry() Gửi các câu truy vấn tới MySQL server Cú pháp: mysql_querry(querry, [connection]) Ví dụ: 28/06/2014 Lập trình Web 22
  23. Các hàm thao tác với MySQL Ngoài ra, để thao tác với CSDL còn có một số hàm sau: Hàm mysql_fetch_array(data, [array_type]): trả về bản ghi trong bảng dữ liệu như là một mảng kết hợp với các cột là khóa hoặc mảng numeric. Hàm mysql_affected_rows([connection]): trả về số bản ghi trong bảng bị ảnh hưởng bởi update, delete, insert Hàm mysql_errno([connection]): trả về số của thông điệp lỗi từ hoạt động của MySQL. Hàm mysql_error([connection]): trả về chi tiết thông điệp bị lỗi. 28/06/2014 Lập trình Web 23
  24. Các hàm thao tác với MySQL Hàm mysql_num_rows(data): trả về số bản ghi trong bảng khi select. Hàm mysql_result(data of querry,[m, n]): trả về giá trị trong bảng tương ứng với hàng m và cột n. Hàm mysql_num_fields([connection]): trả về số trường của bảng. Hàm mysql_ping(): kiểm tra kết nối server. Nếu chưa có kết nối thì reconnect. Hàm mysql_fetch_assoc(data): Trả các bản ghi về như mảng kết hợp 28/06/2014 Lập trình Web 24
  25. Các hàm thao tác với file Dùng để mở, đọc, ghi, dữ liệu vào file Một số hàm cơ bản: Hàm fopen(file_name, format): dùng để mở file có tên file_name theo định dạng format (r, r++, w, w++, a ) Hàm fclose(biến_file): dùng để đóng file đang mở Hàm feof(biến_file): dùng để kiểm tra xem đã kết thúc file hay chưa Hàm fgets(biến_file): dùng để đọc theo từng dòng Hàm fgetc(biến_file): đọc theo từng ký tự 28/06/2014 Lập trình Web 25
  26. Các hàm thao tác với file Ví dụ 28/06/2014 Lập trình Web 26
  27. Các hàm thao tác với file Ví dụ 28/06/2014 Lập trình Web 27
  28. Các hàm lọc Một phần khá quan trọng của bất kỳ ứng dụng web nào là việc kiểm tra tính hợp lệ và lọc dữ liệu từ những nguồn vào không đảm bảo độ tin cậy Các hàm lọc được thiết kế để lọc dữ liệu một cách dễ dàng và nhanh chóng nhất Các hàm lọc trong php gồm Hàm filter_var(): lọc một biến đơn Hàm filter_var_array(): lọc nhiều biến với cùng bộ lọc hoặc các bộ lọc khác nhau Hàm filter_input(): nhận vào một biến và lọc nó Hàm filter_input_array(): nhận vào nhiều biến và lọc nó 28/06/2014 Lập trình Web 28
  29. Các hàm lọc Ví dụ 1: 28/06/2014 Lập trình Web 29
  30. Các hàm lọc Ví dụ 2: array("min_range"=>0 ,"max_range"=>256)); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) echo"Integer is not valid"; else echo"Integer is valid"; ?> 28/06/2014 Lập trình Web 30
  31. Các hàm lọc Ví dụ 3: 28/06/2014 Lập trình Web 31
  32. Các hàm thông báo lỗi Dùng để thông báo và xử lý lỗi Một số hàm cơ bản: Hàm error_log() Hàm user_error() Hàm error_get_last() Hàm set_error_handler() Hàm restore_error_handler() 28/06/2014 Lập trình Web 32
  33. Hàm error_log() Truyền một lỗi đến error log chủ, một file hoặc một đích ở xa. Cú pháp: error_log(error,[type, destination, header]) Ví dụ: 1) {error_log("A custom error has been triggered", 1,"someone@example.com","From: webmaster@example.com"); } ?> 28/06/2014 Lập trình Web 33
  34. Hàm user_error() Dùng để tạo thông báo lỗi người dùng định nghĩa Cú pháp: user_error(error_message) Ví dụ: 1) { user_error("A custom error has been triggered"); } ?> 28/06/2014 Lập trình Web 34
  35. Hàm error_get_last() Thông báo lỗi xuất hiện cuối cùng. Kết quả trả về là một mảng gồm 4 khóa và giá trị: [type] – loại lỗi [message] – thông điệp lỗi [file] – file có lỗi xuất hiện [line] – dòng có lỗi xuất hiện Cú pháp: error_get_last() 28/06/2014 Lập trình Web 35
  36. Hàm error_get_last() Ví dụ: Vi du ham error_get_last() thong diep: $arr[message] tap tin: $arr[file] dong: $arr[line]"); ?> 28/06/2014 Lập trình Web 36
  37. Hàm set_error_handler() Xây dựng hàm người dùng để xử lý lỗi Cú pháp: set_error_handler(error_function) Ví dụ: Custom error: [$errno] $errstr "; echo " Error on line $errline in $errfile "; echo "Ending Script"; die();} set_error_handler("customError"); $test=2; if ($test>1)trigger_error("A custom error has been triggered"); ?> 28/06/2014 Lập trình Web 37
  38. Hàm restore_error_handler() Khôi phục xử lý lỗi trước đó sau khi đã dùng hàm set_error_handler() Cú pháp: restore_error_handler() Ví dụ: Custom error: [$errno] $errstr "; echo " Error on line $errline in $errfile ";} set_error_handler("customError"); $test=2; if ($test>1) { trigger_error("A custom error has been triggered");} restore_error_handler(); if ($test>1) { trigger_error("A custom error has been triggered");} ?> 28/06/2014 Lập trình Web 38
  39. 3.3 CÁC HÀM TỰ TẠO Cách xây dựng hàm trong php Một số lưu ý khi xây dựng hàm 28/06/2014 Lập trình Web 39
  40. Cách xây dựng hàm trong php Cú pháp: function Ten_ham(ds tham số nếu có) { thân hàm; [return giá trị] } 28/06/2014 Lập trình Web 40
  41. Truyền tham số PHP hỗ trợ truyền tham số vào hàm, truyền tham số dưới dạng tham chiếu (reference), truyền tham số với giá trị mặc định 28/06/2014 Lập trình Web 41
  42. Truyền tham số (2) function Loai_cafe ($type = "cappuccino") { return "Making a cup of $type.\n";} echo Loai_cafe (); echo Loai_cafe ("espresso"); function Loai_yogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n";} // Không thực thi đúng echo Loai_yogurt ("raspberry"); function Loai_yogurt ($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour.\n";} // Thực thi echo Loai_yogurt ("raspberry"); 28/06/2014 Lập trình Web 42
  43. Truyền tham số (3) Ta có thể truyền tham số với số lượng không xác định. Khi đó sẽ sử dụng các hàm sau func_num_args(): Số lượng tham số func_get_args(): Lấy danh sách các tham số 28/06/2014 Lập trình Web 43
  44. Giá trị trả về Để trả về giá trị của hàm, sử dụng lệnh return. Có thể sử dụng bất cứ kiểu nào trong giá trị trả về của hàm (kể cả mảng và đối tượng) 28/06/2014 Lập trình Web 44
  45. Biến hàm Bạn có thể sử dụng các biến hàm (tức là bạn có thể gọi hàm dưới dạng ten_bien() ). Biến hàm thường được sử dụng cho các hàm callback \n";} function bar($arg = '') {echo "In bar(); argument was '$arg'. \n";} // This is a wrapper function around echo function echoit($string) {echo $string;} $func = 'foo'; $func(); // This calls foo() $func = 'bar'; $func('test'); // This calls bar() $func = 'echoit'; $func('test'); // This calls echoit() ?> 28/06/2014 Lập trình Web 45
  46. Biến hàm (2) $name(); // This calls the Bar() method } function Bar() { echo "This is Bar"; } } $foo = new Foo(); $funcname = "Var"; $foo->$funcname(); // This calls $foo->Var() ?> 28/06/2014 Lập trình Web 46
  47. 3.4 SỬ DỤNG LẠI MÃ PHP Vì sao phải sử dụng lại mã php Cách sử dụng lại mã php 28/06/2014 Lập trình Web 47
  48. Vì sao sử dụng lại mã php? Chi phí Độ tin cậy Tính nhất quán 28/06/2014 Lập trình Web 48
  49. Cách sử dụng lại mã php Để sử dụng lại mã php ta có thể dùng các khai báo sau: Khai báo require() Khai báo include() 28/06/2014 Lập trình Web 49
  50. Khai báo require() Dùng để nhúng một trang này vào đoạn mã của một trang khác mà không cần phải viết lại mã. Ví dụ: Ta có trang Bienluan.php 28/06/2014 Lập trình Web 50
  51. Khai báo require() Sau đó ta xây dựng trang PTBN.php và có sử dụng require() để nhúng trang Bienluan.php vào. 28/06/2014 Lập trình Web 51
  52. Khai báo require() Lưu ý:  Có thể nhúng bất kỳ dạng file có phần mở rộng nào vào trang php. Tuy nhiên, chỉ có những trang có phần mở rộng .php hoặc có đoạn mã php sẽ được thực thi.  Khi nhúng file bằng require() thì nội dung của file trong khai báo require() sẽ là một phần của trang php hiện tại, và chúng có thể được thực thi khi trang php được gọi.  Khai báo require() cần được đặt giữa cặp thẻ 28/06/2014 Lập trình Web 52
  53. Khai báo include() Cả include và require đều có tác dụng là nhúng file vào trang php. Tuy nhiên, giữa chúng có điểm khác là Khi nạp bằng require thì web server cần phải dịch lại mỗi khi thực thi. Trong trường hợp nhúng nhiều file vào trang php mà phụ thuộc vào điều kiện nào đó thì ta nên sử dụng include. 28/06/2014 Lập trình Web 53
  54. Khai báo include() Ví dụ: Xét đoạn mã 28/06/2014 Lập trình Web 54
  55. Thực hành 1. Tạo các file có tên như sau: - Top.php - Left.php - Right.php - Bottom.html Sau đó, sử dụng require hoặc include để chèn vào trang index.php như sau: 28/06/2014 Lập trình Web 55
  56. Thực hành Top.php Phần hiển thị nội dung Left.php chính right.php Bottom.html 28/06/2014 Lập trình Web 56
  57. Thực hành 2. Tạo 2 file có tên như sau: - Giaiptbn.php - Giaiptbh.php Sau đó, sử dụng require hoặc include để chèn vào trang giainghiem.php. 3. Nhập vào xâu ngày tháng năm, sau đó tách xâu, kiểm tra và thông báo chính xác ngày, tháng, năm nhập vào. Nếu giá trị nhập vào không hợp lệ thì đưa ra thông báo. 28/06/2014 Lập trình Web 57
  58. Thực hành 4. Tạo một file .txt sau đó sử dụng các hàm thao tác với file để: - Đọc dữ liệu từ file và hiển thị ra màn hình - Ghi nội dung mới vào file 28/06/2014 Lập trình Web 58