Giáo trình Lập trình web - Chương 2: PHP cơ bản

pdf 103 trang hapham 2210
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình web - Chương 2: PHP cơ bản", để 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:

  • pdfgiao_trinh_lap_trinh_web_chuong_2_php_co_ban.pdf

Nội dung text: Giáo trình Lập trình web - Chương 2: PHP cơ bản

  1. Đạ i H ọc S ư Ph ạm Tp. H ồ Chí Minh LẬP TRÌNH WEB PHP Chương 02: PHP CƠ BẢN
  2. NỘI DUNG • Phần 1: Tổng quan về PHP • Phần 2: PHP cơ bản 2
  3. Nội dung phần 1 1.1.Gi ới thi ệu PHP a. Lịch s ử phát tri ển b. PHP là gì c. Ưu điểm d. Một s ố website dùng PHP 2.2. Ho ạt độ ng c ủa Web Server a. Cơ ch ế b. Ví d ụ 3.3. Yêu c ầu cài đặ t a. Web server (Apache, IIS) b. Ph ần mềm PHP (trình thơng d ịch PHP) c. Hệ qu ản tr ị c ơ s ở d ữ li ệu (mysql, SQL Server, Access) 4.4.Gi ải pháp cài đặ t tr ọn gĩi (WAMP, LAMP, XAMP ) 3
  4. 1. Gi ới thi ệu PHP – Lịch s ử •• PHP : Rasmus Lerdorf in 1994 (đượ c phát tri ển để phát sinh các form đă ng nh ập sử dụng giao th ức HTTP của Unix) •• PHP 22((19951995)) : Chuy ển sang ngơn ng ữ script xử lý trên server .Hỗ tr ợ CSDL, Upload File, khai báo bi ến, mảng, hàm đệ quy, câu điều ki ện, bi ểu th ức, •• PHP 33((19981998)) : Hỗ tr ợ ODBC, đa hệ điều hành , giao th ức email (SNMP, IMAP), bộ phân tích mã PHP (parser) của Zeev Suraski và Andi Gutmans •• PHP 44((20002000)) : Tr ở thành một thành ph ần độ c lập cho các webserver. Parse đổ i tên thành Zend Engine .Bổ sung các tính năng bảo mật cho PHP •• PHP 55((20052005)) : Bổ sung Zend Engine II hỗ tr ợ lập trình HĐT, XML, SOAP cho Web Services, SQLite • Phiên bản mới nh ất của PHP là version PHP 5.2.4 (www.php.net ) 4
  5. 1. Gi ới thi ệu PHP – PHP là gì? •• PHP được phát tri ển từ ngơn ngữ kịch bản (script) với mục đích xây dựng trang Web cá nhân (Personal Home Page). Sau đĩ đã được phát tri ển thành một ngơn ngữ hồn chỉnh và được ưa chuộng trên tồn thế gi ới trong vi ệc phát tri ển các ứng dụng Web. •• PHP là một ngơn ngữ thơng dịch. • Là ngơn ngữ server-side script, tương tự như ASP, JSP, thực thi ở phía Server. •Tập tin PHP cĩ phần mở rộng là phpphp • Cú pháp tương tự ngơn ngữ CC&&Perl 5
  6. 1. Gi ới thi ệu PHP – Ưu điểm (Multi Platform)Platform) •• Web Servers : Apache, Microsoft IIS, Caudium, Netscape Enterprise Server •• Hệ điều hành : UNIX (HP-UX, OpenBSD, Solaris, Linux), Mac OSX, Windows NT/98/2000/XP/2003/vista •• Hệ QTCSDL : Adabas D, dBase, Empress, FilePro (read-only), Hyperwave, IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, Direct MS-SQL, MySQL, ODBC, Oracle (OCI7 and OCI8), Ovrimos, PostgreSQL, SQLite, Solid, Sybase, Velocis, Unix dbm 6
  7. 1. Gi ới thi ệu PHP – Ưu điểm PHP được sử dụng r ộng rãi trên mơi tr ường phát tri ển web 7
  8. 1. Gi ới thi ệu PHP – Một s ố website dùng PHP 8
  9. 2. Hoạt động của Web Server CƠ CHẾ HOẠT ĐỘNG 9
  10. 2. Hoạt động của Web Server •• Apache và IIS được xây dựng để đáp ứng các yêu cầu (request) các tập tin HTML • Khơng hi ểu cách th ực thi mã PHP ở phía server •• Apache sử dụng các modules để “hi ểu” cách th ực thi các đoạn mã vi ết bằng PHP •• IIS sử dụng tập lệnh ISAPI - Internet Server Application Programming Interface - để “hi ểu” các lệnh của PHP và ASP • Ngồi ra, cả Apache và IIS đề u hỗ tr ợ nhi ều module khác ph ục vụ cho vi ệc tri ển khai ứng dụng web một cách hi ệu qu ả 10
  11. 2. Hoạt động của Web Server hello.php PHP Test Hello World ' ; ?> output PHP Test Hello World 11
  12. 2. Hoạt động của Web Server 12
  13. 3. Yêu cầu cài đặt •• Download Apache Server Download Apache for free here : •• Download PHP Download PHP for free here : •• Download MySQL Database Download MySQL for free here : 13
  14. 4. Gi ải pháp trọn gĩi • LAMP – Linux • WAMP – Windows • XAMPP – Windows/Linux 14
  15. Phần 2: PHP căn bản
  16. Nội dung phần 2 1. PHP và HTML 2. Câu l ệnh PHP 3. Ghi chú trong PHP 4. Khai báo bi ến 5. Ki ểu dữ li ệu 6. Tốn t ử 7. Cấu trúc điều khi ển 8. Hàm 9. Phạm vi c ủa bi ến 10. Bi ến t ĩnh 11. Làm vi ệc v ới file và thư mục 12. Lớp – Đối t ượng trong PHP 16
  17. 1. PHP và HTML 17
  18. 2. Câu l ệnh PHP • Phát bi ểu: – Các câu l ệnh php cách nhau bởi dấu ‘ ;’ – Khơng phân bi ệt khoảng tr ắng, tab hay ký t ự xuống dịng. • Ví dụ: 18
  19. 3. Ghi chú trong PHP • Ghi chú của PHP t ương t ự như của C++ và Perl • Cĩ 3 loại ghi chú: – Sử dụng ‘ //// ’ để ghi chú – Sử dụng ‘ ##’ để ghi chú – Sử dụng /*/* */*/ để ghi chú • Ví dụ: tương t ự nh ư # 19
  20. 4. Khai báo bi ến • Cú pháp: $ten_bien = value ; •• Khơng khai báo ki ểu dữ li ệu • Bi ến t ự độ ng được kh ởi t ạo khi gán giá tr ị l ần đầ u • Tên bi ến – Bao g ồm các ký t ự (A Z, a z), ký s ố(0 9),_ –– Khơng được b ắt đầ u bằng ký s ố (0 9) –– Phân bi ệt ch ữ hoa – ch ữ th ườ ng • Ví d ụ: – Đúng cú pháp: $hoten, $_pass – Sai cú pháp: $2host 20
  21. 4. Khai báo bi ến • Variable variables – Cho phép thay đổ i tên bi ến – Víd ụ ? >? • Hằng số - Constants 21
  22. 5. Ki ểu dữ li ệu • boolean • integer • double • string • array • object Một bi ến trong PHP cĩ thể l ưu bất kỳ ki ểu dữ li ệu nào 22
  23. 5. Ki ểu dữ li ệu • Chuyển đổi ki ểu dữ li ệu – Cách 1 (automatic ) $var = “100” + 15 ; $var = “100” + 15.0 ; $var = 39 . “ Steps” ;//Chú ý – Cách 2 (datatype) $var – Cách 3 settype($var , “ datatype”) • VD: 23
  24. 5. Ki ểu dữ li ệu • Ki ểm tra ki ểu dữ li ệu gettype is_string isset is_integer is_array unset is_double is_object empty • Ví dụ $var = “test” ; if ( isset ($var )) echo “Variable is Set” ; if ( empty ($var )) echo “Variable is Empty” ; 24
  25. 5. Ki ểu dữ li ệu • Một s ố hàm x ử lý s ố • Ví d ụ: Tra Hướng Dẫn // Phát sinh một “ mầm” ng ẫu nhiên trong PHP Manual $seed = ( float ) microtime ()* 100000000 ; // Kh ởi t ạo b ộ phát sinh s ố ng ẫu nhiên srand ($seed ); // In s ố ng ẫu nhiên print rand(); // Giá tr ị ng ẫu nhiên t ừ 0 đế n getmaxrand ( ) print rand(1, 6); // Giá tr ị ng ẫu nhiên t ừ 1 đế n 6 25
  26. 5. Ki ểu dữ li ệu • Ki ểu string – Tốn t ử nối chuỗi “.” $str =“ Hello “ . ”World! ”; // $str = “ Hello World! ”; – Phân bi ệt dấu nháy đơn, dấu nháy kép $user = “ Mr Bean ”; print ‘Hi $user ’; // Hi $user print “Hi $user ”;// Hi Mr Bean print “Hi ”. $user;// ???? print “Hi ”. “$user”;// ???? 26
  27. 5. Ki ểu dữ li ệu: Ki ểu chuỗi (tt) • Gi ới hạn bởi nháy đơn ( ‘) hoặc kép ( “) • Chuỗi đặt trong nháy kép bị thay thế và x ử lý ký t ự thốt. Trong nháy đơn thì khơng. • Ví dụ: $a = “Hello”; $b = “$a world”; //t ươ ng đươ ng $b=“Hello world” $c = ‘$a world’; //$c=‘$a world’ (khơng thay đổ i) 27
  28. 5. Ki ểu dữ li ệu: Ki ểu chuỗi (tt) • Để làm rõ các bi ến trong chuỗi, cần bao bi ến vào gi ữa cặp ngoặc nhọn { } $a = “He”; $b = “$allo”; //lỗi vì PHP hiểu là $allo $c = “{$a}llo”; //đúng ($c = “Hello”) 28
  29. 5. Ki ểu dữ li ệu: Ki ểu chuỗi (tt) • Ký t ự thốt: \ – Sử d ụng để vi ết các ký t ự đặ c bi ệt trong chu ỗi – VD: Cần cĩ chu ỗi: Ng ười ta nĩi “PHP r ất t ốt” $a = “Ng ườ i ta nĩi “PHP r ất t ốt””; //Sai $a = “Ng ườ i ta nĩi \“PHP r ất t ốt\””; // Đúng – Một s ố ký t ự ph ải s ử d ụng ký t ự thốt: $, \, “ – Ngồi ra: • \n: Xu ống dịng • \r: tr ở v ề đầ u dịng • \t: d ấu tab • 29
  30. 5. Ki ểu dữ li ệu: Ki ểu chuỗi (tt) • Ki ểu tài li ệu (heredoc): – Cho phép vi ết 1 chu ỗi trên nhi ều dịng. – Khơng c ần s ử d ụng ký t ự thốt: – Cách vi ết: $bi ến = <<< Ký_hi ệu nội dung trên nhi ều dịng Ký_hi ệu; – Chú ý: Ký_hi ệu ph ải được vi ết ở ký t ự đầ u tiên của dịng – Ví d ụ: $a = <<<EOD Đây là chu ỗi n ằm trên nhi ều dịng s ử d ụng cú pháp ki ểu tài li ệu ‘heredoc’ EOD; 30
  31. 5. Ki ểu dữ li ệu: Ki ểu chuỗi (tt) spanning multiple lines using heredoc syntax. EOA;//khơng đượ c cĩ kho ảng tr ắng đầ u dịng echo( $str ); $name = “mr bean" ; $d = date ("d/m/y" ); $str = Ngay $d EOQ; echo( $str ); ?> 31
  32. Các hàm xử lý chuỗi •• Các xử lý cơ bản –– strlen ($chu ỗi) –– substr ($chu ỗi, $v ị trí, $chi ều_dài) –– strtoupper ($chu ỗi) –– strtolower ($chu ỗi) –– iconv(mã ngu ồn, mã đích, $chu ỗi) –– trim($chu ỗi, ’ký t ự mu ốn c ắt’) –– ltrim($chu ỗi, ’ký t ự mu ốn c ắt’) –– rtrim($chu ỗi, ’ký t ự mu ốn c ắt’) 32
  33. Các hàm xử lý chuỗi •• Tìm ki ếm –– strpos ($chu ỗi, $chu ỗi_con, $v ị_trí_b ắt đầ u) –– strrpos ($chu ỗi, $chu ỗi_con, $v ị_trí_b ắt đầ u) •• So sánh –– strcmp ($chu ỗi_1, $chu ỗi_2) –– strncmp ($chu ỗi_1, $chu ỗi_2, $chi ều_dài) –– strcasecmp ($chu ỗi_1, $chu ỗi_2) –– strncasecmp ($chu ỗi_1, $chu ỗi_2, $chi ều_dài) –– strnatcmp ($chu ỗi_1, $chu ỗi_2) –– strnatcasecmp ($chu ỗi_1, $chu ỗi_2) 33
  34. 5. Ki ểu dữ li ệu 34
  35. 5. Ki ểu dữ li ệu Hàm str_pad STR_PAD_RIGHT : Thêm vào bên ph ải (mặc đị nh) STR_PAD_LEFT : Thêm vào bên trái STR_PAD_BOTH : Thêm c ả hai phía 35
  36. 5. Ki ểu dữ li ệu 36
  37. 5. Ki ểu dữ li ệu • Mảng ( Array) " ; } Do you like blue? $num = count( $colors ); Do you like green? Do you like red? echo “We have $num items ” ; Do you like yellow? ?> We have 4 items 37
  38. 5. Ki ểu dữ li ệu • Mảng ( Array) $color ){ Array $colors [$key ] = strtoupper ($color ); ( } [0] => RED [1] => BLUE print_r ($colors ); [2] => GREEN ?> [3] => YELLOW ) 38
  39. 5. Ki ểu dữ li ệu "apple" , "b" => "banana" ); $b = array( "a" => "pear" , "b" => "strawberry" , "c" => "cherry" ); $c = $a + $b ; // Union of $a and $b echo "Union of \$a and \$b: \n" ; var_dump ($c ); $c = $b + $a ; // Union of $b and $a echo "Union of \$b and \$a: \n" ; var_dump ($c ); ?> Union of $a and $b: Union of $b and $a: array(3) array(3) { { ["a"]=> string(5) "apple" ["a"]=> string(4) "pear" ["b"]=> string(6) "banana" ["b"]=> string(10) "strawberry" ["c"]=> string(6) "cherry" ["c"]=> string(6) "cherry" } } 39
  40. 5. Ki ểu dữ li ệu "blue" , "size" => "medium" , "shape" => "sphere" ); extract( $var_array , EXTR_PREFIX_SAME , "wddx" ); echo "$color, $size, $shape, $wddx_size\n" ; ?> blue, large, sphere, medium 40
  41. 5. Ki ểu dữ li ệu 41
  42. Các hàm xử lý mảng •• Sắp xếp Theo giá tr ị –– sort ($m ảng) / asort ($m ảng) // t ăng d ần –– rsort ($m ảng) / arsort ($m ảng) // gi ảm d ần –– natsort ($m ảng) / natcasesort ($m ảng) // t ăng d ần, dùng cho chu ỗi –– usort ($m ảng, ”hàm_so_sánh”) // t ự đị nh ngh ĩa th ứ t ự –– uasort ($m ảng, ”hàm_so_sánh”) // t ự đị nh ngh ĩa th ứ t ự Theo khĩa –– ksort ($m ảng) // t ăng d ần –– krsort ($m ảng) // gi ảm d ần –– uksort ($m ảng, ”hàm_so_sánh”) // t ự đị nh ngh ĩa th ứ t ự 42
  43. Các hàm xử lý mảng •• Nối ghép hai mảng array_merge ($mảng1, $mảng2) array_combine ($mảng1, $mảng2) array_intersect ($mảng1, $mảng2) •• Tìm ki ếm array_search ($giá_tr ị, $mảng) 43
  44. 6. Tốn t ử 44
  45. 6. Tốn t ử xE xE amNeName Result $a == $b Equal TRUE if $a is equal to $b. $a === $b Identical TRUE if $a is equal to $b, and they are of the same type. (PHP 4) $a != $b Not equal TRUE if $a is not equal to $b. $a $b Greater than TRUE if $a is strictly greater than $b. $a = $b Greater than or equal to TRUE if $a is greater than or equal to $b. 45
  46. 7. Cấu trúc điều khi ển • Điều ki ện ifif • Điều khi ển switch • Vịng l ặp for • Vịng l ặp while Tương t ự như C++ • Vịng l ặp do While • Vịng l ặp foreach •Từ khĩa break, continue 46
  47. Câu l ệnh if ifif ((bi ểu thức điều ki ện)) khối l ệnh 1 eelselse khối l ệnh 2 47
  48. 7. Cấu trúc điều khi ển • Rẽ nhánh với if else if ($a > $b ) { echo "a > b"; $a = $b ; } else { echo "a <= b"; $b = $a ; } 48
  49. Câu l ệnh switch switch ((bibi ểu thứcc)) {{ case bi ểu thức 11:: khối l ệnh 11 case bi ểu thức 22:: khối l ệnh 22 case bi ểu thức n: khối l ệnh n default :: khối l ệnh cuối } } 49
  50. 7. Cấu trúc điều khi ển • Rẽ nhánh với switch case switch ($a ) { case 0: echo "a = 0"; break ; case 1: echo "a = 1"; break ; } 50
  51. Vịng l ặp while/do while while ((bi ểu thức điều ki ện)) khối l ệnh Hay: ddoo khối l ệnh while ((bi ểu thức điều ki ện)); 51
  52. 7. Cấu trúc điều khi ển • Lặp với while & do while while ($i ++ < 5) { switch ($i ) { case 2: echo "At 2"; break ; case 5: echo "At 5"; break 2; default : break ; } } 52
  53. Vịng l ặp for for ((bi ểu thức 1;; bi ểu thức 2;; bi ểu thức 3)) khối l ệnh •• bi ểu th ức 1: th ực hi ện 1 l ần khi b ắt đầ u vịng l ặp •• bi ểu th ức 2: điều ki ện l ặp, được xem xét tr ước mỗi lần l ặp •• bi ểu th ức 3: th ực hi ện sau mỗi l ần l ặp 53
  54. 7. Cấu trúc điều khi ển • Lặp với for & foreach for ($i =1, $j =0; $i $value ) { echo "Key: $key ; Value: $value "; } 54
  55. Các l ệnh ngắt l ặp •• break Ngưng và thốt ra khỏi vịng l ặp hi ện t ại •• continue Ngưng thực hi ện l ần l ặp hi ện hành để chuy ển sang l ần l ặp ti ếo theo 55
  56. 7. Cấu trúc điều khi ển \n" ; } foreach ($arr as $value ){ echo "Value: $value \n" ; } ?> 56
  57. 7. Cấu trúc điều khi ển \n" ; } foreach ($arr as $key => $value ) { echo "Key: $key; Value: $value \n" ; } ?> Key: 0; Value: one Key: 1; Value: two Key: 2; Value: three Key: 0; Value: one Key: 1; Value: two Key: 2; Value: three 57
  58. 8. Hàm lưu ý: dấu & 58
  59. 88 Hàm •• Đị nh nghĩa ? >? ••G ọi hàm Nh ập tên hàm (khơng phân bi ệt ch ữ in hoahoa thth ườ ng) và cung c ấp đầ y đủ các tham s ố c ần thi ết trong c ặp d ấu () 59
  60. 88 Hàm ••K ết thúc và tr ả k ết quả Lệnh return dùngểđ ểđkếtàv thúc rt tcúhtr àvả kết qu ả cũng nh ư quy ền điều hi ển lại cho nơi đã gọi hàm Nếucĩ khơng nơkhg cĩ lệnh return thì mặc đị nh hàm tr ả về giá tr ị NULL Mu ốn tr ả v ề h ơn một giá tr ị thì ph ải dùng mảng •• Truy ền tham s ố Mặc đị nh các tham số đượ c truy ền vào bên trong hàm theo ph ươ ng pháp tham tr ị Tr ườ ng hợp mu ốn thay đổ i tr ực ti ếp trên các tham số truy ền thì ng ườ i tata dùng ph ươ ng pháp tham chi ếu, thêm dấu & tr ướ c tên tham số (khi đị nh ngh ĩa) cũng nh ư tên bi ến đượ c truy ền làm tham (khi gọi hàm) 60
  61. 8. Hàm •• Tham s ố cĩ giá tr ị mặc đị nh Tươ ng t ự cách khaiàv báo ágn ốbgán àv giá tr ị đầ u tiên cho bi ến, thơng th ườ ng lo ại tham số này nên đặ t cu ốitrong danh sách tham số Khi g ọi hàm nếu bỏ tr ống tại vtríị mtahtham tríscĩố áiggiá cĩtr ị mặc đị nh thì m ặc nhiên giá tr ị mặc đị nh đượ c dùng cho tham số đ ĩ •• Hàm cĩ s ố l ượng tham s ố khơng xác đị nh Khai báo danh sách tham s ố r ỗng () Sử d ụng các hàm sau để l ấy danh sách các tham s ố: func_num_args(): số l ượ ng tham s ố khi hàm đượ c g ọi func_get_arg(i): giá tr ị các tham s ố th ứ i đượ c truy ền (b ắt đầ u t ừ 0) func_get_args(): danh sách t ất c ả các tham s ố 61
  62. 8. Hàm •• Bi ến t ĩnh Thêm t ừ khĩa static khi khai báo bi ến Đượ c kh ởi t ạo (và gán giá tr ị) m ột l ần đầ u tiên duy nh ất trong su ốt quá trình th ực thi c ủa script •• Sử dụng bi ến tồn c ục Khai báo l ại bi ến tồn c ục v ới t ừ khĩa global (bên trong hàm) để cĩ th ể s ử d ụng đượ c bi ến tồn c ục này bên trong hàm Sử d ụng các hàm sau để l ấy danh sách các tham s ố: func_num_args() : s ố l ượ ng tham s ố khi hàm đượ c g ọi func_get_arg(i) : giá tr ị các tham s ố th ứ i đượ c truy ền (b ắt đầ u t ừ 0) func_get_args(): danh sách t ất c ả các tham s ố 62
  63. 8. Hàm •• Phạm vi Cĩ giá tr ị s ử d ụng trong tồn script, ngay c ả tr ước và sau khi đị nh ngh ĩa •• Lồng hàm Cho phép đị nh ngh ĩa l ồng hàm, th ậm chí l ồng bên trong một c ấu trúc điều khi ển (if, switch, while/do, while ) Lo ại hàm này cĩ ph ạm vi trong tồn script và khơng th ể đị nh ngh ĩa l ại 63
  64. 8. Hàm 64
  65. 8. Hàm 65
  66. 8. Hàm ?> 66
  67. 8. Hàm \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() ?> 67
  68. 8. Hàm $name (); // This calls the Bar() method } function Bar () { echo "This is Bar" ; } } $foo = new Foo (); $funcname = "Variable" ; $foo ->$funcname (); // This calls $foo->Variable() ?> 68
  69. 9. Phạm vi của bi ến 69
  70. 9. Phạm vi của bi ến Ph ạm vi c ủa bi ến [a] cĩ tác d ụng trong c ả b.inc Bi ến [a] ở ngồi và trong hàm Test khác nhau 70
  71. 9. Phạm vi của bi ến Tên bi ến Mơ t ả ch ứa t ất c ả các bi ến tồn c ục mà đoạn script c ục b ộ $GLOBALS cĩ th ể truy c ập $_SERVER ch ứa thơng tin v ề mơi tr ườ ng c ủa web server $_GET ch ứa thơng tin c ủa yêu c ầu d ạng GET $_POST ch ứa thơng tin c ủa yêu c ầu d ạng POST $_COOKIE ch ứa thơng tin t ừ HTTP cookie $_FILE ch ứa thơng tin t ừ vi ệc t ải t ập tin lên ki ểu POST ch ứa thơng tin v ề mơi tr ườ ng th ực thi c ủa đoạn $_ENV script $_REQUEST ch ứa thơng tin nh ập vào c ủa ng ườ i dùng $_SESSION ch ứa thơng tin c ủa các session đượ c đă ng ký 71
  72. 10. Bi ến t ĩnh ?> ? 72
  73. 11. Làm vi ệc với t ập tin và thư mục 1. Sử dụng include() 2. Sử dụng include_once() 3. Sử dụng include_path cho các dự án l ớn 4. Ki ểm tra file 5. Đọc, ghi file 6. Làm vi ệc v ới thư mục 73
  74. 11. Làm vi ệc với t ập tin và thư mục •Lệnh include () cho phép bạn ph ối hợp gi ữa các file trong một PHP project, ko gi ống nh ư cú pháp #include của ngơn ng ữ C, lệnh này khơng chèn mã lệnh vào file mà th ực thi file php gi ống nh ư cú pháp gọi hàm • include () sử dụng để chia sẻ các hàm dùng chung, các đoạn mã chung trong một project cĩ nhi ều file •Nếu khơng tìm th ấy file, include () thơng báo warning nh ưng khơng dừng ch ương trình • PHP cung cấp 1 lệnh tương tự include () là require (), lệnh này cĩ sự khác bi ệt là sẽ dừng ngay ch ương trình khi khơng tìm th ấy file 74
  75. 11. Làm vi ệc với t ập tin và thư mục //vars.php VìVìinclude() th ực hi ện lời g ọi đế n file php,php , return 4 + 4; ?> //test.php // A " ; echo "A $color $fruit" ; $retVal = include( "file1.php" ); // A green apple echo “Value file 1: $retVal "; echo "This is from file 2 \n"; ?> ?> 75
  76. 11. Làm vi ệc với t ập tin và thư mục • Cĩ thể đặt lệnh include bên trong 1 cấu trúc điều ki ện hoặc cấu trúc lặp, • Khi đĩ tùy theo điều ki ện của cấu trúc mà include() cĩ được thực hi ện hay khơng, 1 hay nhi ều lần • Vi ệc này giúp hỗ tr ợ cho vi ệc thi ết kế ki ến trúc trang web tốt hơn. 76
  77. 11. Làm vi ệc với t ập tin và thư mục • include_once () gi ống nh ư include (), tuy nhiên cĩ điểm khác bi ệt là ch ỉ include 1 lần, lần sau nếu gặp lại file này thì ko include nữa • include_once () phân bi ệt ch ữ hoa, ch ữ th ường Vì phân bi ệt chữ hoa/thường nên include_one chèn thêm l ần thứ hai 77
  78. 11. Làm vi ệc với t ập tin và thư mục ••include file theo đường dẫn tuy ệt đối: Cách này dở vì khi cài đặt trên máy khác sẽ khơng tìm thấy file được include ••include file theo đường dẫn tương đối: Cách này tốt hơn, nhưng mỗi khi đổi vị trí của file được include thì phải sửa lại tại tất cả các file thực hi ện lời gọi include • Cách tốt nhất là sử dụng include_path (thi ết lập trong file PHP.INI) đối với những file thư vi ện dùng chung được sử dụng nhi ều (gi ống như đối với ngơn ngữ C) 78
  79. 11. Làm vi ệc với t ập tin và thư mục  thay đổi include_path trong PHP.INI  dùng l ệnh set_include_path()  dùng l ệnh ini_set() 79
  80. 11. Làm vi ệc với t ập tin và thư mục file_exist(), is_file(), is_dir(), is_readable(), is_writeable(), is_executable(), filesize(), fileatime()  " ; return; } print "$file is " .( is_file ( $file )? "" :"not " ). "a file \n"; print "$file is " .( is_dir ( $file )? "" :"not " ). "a directory \n"; print "$file is " .( is_readable ( $file )? "" :"not " ). "readable \n"; print "$file is " .( is_writable ( $file )? "" :"not " ). "writable \n"; print "$file is " .( filesize ($file )). " bytes \n"; print "$file was accessed on " .date ( "D d M Y g:i A" , fileatime ($file )). " " ; print "$file was modified on " .date ( "D d M Y g:i A" , filemtime ( $file )). " " ; print "$file was changed on" .date ( "D d M Y g:i A" , filectime ($file )). " " ; } outputFileTestInfo( "c: \\windows \\system32 \\cmd.exe" ); ?> 80
  81. 11. Làm vi ệc với t ập tin và thư mục fopen ($filename , $mode ); fwrite ($handle , $string ); fread ($handle , $length ); fgets ($handle ); sprintf ($format ); fscanf ($handle , $format ); fseek ($handle , $offset ); fclose ($handle ); file_get_contents ($filename ); 81
  82. 11. Làm vi ệc với t ập tin và thư mục fclose ($f ); 82
  83. 11. Làm vi ệc với t ập tin và thư mục 83
  84. 11. Làm vi ệc với t ập tin và thư mục a = 10 ; $ob1->b = 100.023 ; $ob1->c = "Test String" ; var_dump ($ob 1); $f = fopen ("test.txt" , "wb" ); fwrite ($f , serialize ($ob1)); fclose ($f ); $f = fopen ("test.txt" , "rb" ); $ob2 = unserialize (fgets ($f )); fclose ($f ); var_dump ($ob2); ?> 84
  85. 11. Làm vi ệc với t ập tin và thư mục • mkdir(), rmdir() • opendir(), readdir(), closedir() 85
  86. Bài t ập Vi ết một script thực hi ện cơng vi ệc sau: •• Yêu c ầu ng ười dùng nh ập vào một s ố nguyên •• Đem so sánh s ố v ừa nh ập v ới một s ố nguyên cho tr ước •• Nếu b ằng thì xu ất ra câu chúc mừng ng ười dùng đã đốn đúng con s ố bí mật •• Ng ược l ại thì thì thơng báo k ết qu ả là con s ố v ừa nh ập là l ớn hay bé h ơn con s ố bí mật và yêu c ầu nh ập l ại cho đế n khi nh ập đúng 86
  87. 12. Lớp và Đối t ượng trong PHP • Khai báo l ớp • Hàm t ạo • Phạm vi •Kế thừa • Hàm serialize,unserialize 87
  88. 12. Lớp và Đối t ượng trong PHP • Khai báo • Hàm t ạo 88
  89. 12. Lớp và Đối t ượng trong PHP •• Khai báo l ớp class tên_l ớp {{ các thu ộc tính và ph ương th ức }} •• Tạo và hủy một đối t ượng $tên_bi ến = new tên_l ớp(); Đố i t ượng s ẽ t ự độ ng b ị h ủy khi khơng cịn tham chi ếu nào đế n nĩ $tên_bi ến = NULL ;; 89
  90. 12. Lớp và Đối t ượng trong PHP •• Các t ừ khĩa khai báo: –– public : cĩ th ể s ử d ụng bên ngồi l ớp –– private : ch ỉ s ử d ụng c ục b ộ bên trong l ớp –– protected : s ử d ụng được b ởi các l ớp k ế th ừa •• Một s ố quy t ắc chung: –– Khơng th ể khai báo hai method trùng tên –– Method ph ải được khai báo ngay bên trong khai báo l ớp –– Dùng bi ến gi ả $this để truy xu ất các member và method trong l ớp –– Dùng tốn t ử >> để truy xu ất đế n member và method 90
  91. 12. Lớp và Đối t ượng trong PHP •• Khai báo constructor và destructor public function __construct (danh sách tham s ố) {{ kh ởi t ạo giá tr ị các member }} constructor đượ c t ự độ ng th ực hi ện khi đố i t ượ ng đượ c t ạo public function __destruct ()() {{ dọn d ẹp }} destructor đượ c t ự độ ng th ực hi ện khi đố i t ượ ng b ị h ủy 19 19 91
  92. 12. Lớp và Đối t ượng trong PHP 92
  93. Lập trình hướng đối t ượng: constant •• Khai báo const TÊN_HẰNG = giá tr ị; •• Truy xuất tên_l ớp:::: TÊN_HẰNG // ngồi l ớp seft :::: TÊN_HẰNG // trong l ớp 93
  94. Lập trình hướng đối t ượng: static member •• Khai báo static $thuộc_tính •• Truy xuất tên_l ớp::$thuộc_tính // ngồi l ớp seft::$thuộc_tính // trong l ớp 94
  95. Lập trình hướng đối t ượng: static method •• Khai báo static function phương_thức( ) •• Truy xuất tên_l ớp::phương_thức( ) // ngồi l ớp seft:: phương_thức( ) // trong l ớp 95
  96. Lập trình hướng đối t ượng: lớp con •• Khai báo l ớp con class lớp_con extends lớp_cha {{ các thuộc tính và phương thức }} Tất c ả các member và method được khai báo public hay protected trong l ớp cha được thừa kế và cĩ thể s ử dụng trong l ớp con 96
  97. Lập trình hướng đối t ượng: phương thức nạp chồng •• Gọi một method l ớp cha parent:: phương_thức( ) Bằng cách đị nh ngh ĩa lại một ph ươ ng th ức đĩcã ĩcởở lớp cha, tất c ả các lời g ọi đế n ph ươ ng th ức này mà khơng ch ỉ đị rõnh hn hnnh rõư trên s ẽ đượ c hi ểu làlà gọi ph ươ ng th ĩcức gnùccùng c ĩc tên của lớp con 97
  98. Lập trình hướng đối t ượng: sự đa hình •• Khai báo l ớp tr ừu t ượng abstract class lớp_tr ừu_t ượng {{ // các thu ộc tính abstract public function ph ương_th ức_tr ừu_t ượng( ); // các ph ương th ức khác }} Khơng th ể t ạo đố i t ượ ng tr ực ti ếp t ừ l ớp tr ừu t ượ ng Lớp con b ắt bu ộc ph ải đị nh ngh ĩa các ph ươ ng th ức tr ừu t ượ ng c ủa l ớp cha 98
  99. Lập trình hướng đối t ượng: ngăn kế thừa và nạp chồng •• Lớp khơng thể kế thừa final class khơng_thể_k ế_thừa { } •• Phương thức khơng thể nạp chồng final public function khơng_th ể_n ạp_ch ồng( ) { } 99
  100. Lập trình hướng đối t ượng: interface •• Khai báo Interface interface giao_di ện {{ public function ph ươ ng_th ức(); }} •• Khai báo l ớp theo mẫu Interface abstract class tên_l ớp implements giao_di ện {{ } } Các l ớp s ử dụng Interface hay kế th ừa từ một l ớp sử dụng Interface b ắt bu ộc ph ải đị nh ngh ĩa tấtc ả các ph ươ ng th ức trong Interface đĩ 100
  101. 12. Lớp và Đối Tượng trong PHP 101
  102. 12. Lớp và Đối Tượng trong PHP 1. Hàm serialize() dùng để l ưu tr ữ đố i t ượ ng, hàm tr ả v ề m ột chu ỗi các byte để l ưu thơng tin c ủa đố i t ượ ng 2. Hàm unserialize() dùng để khơi ph ục đố i t ượ ng đượ c l ưu gi ữ b ởi hàm serialize( ) a = 10 ; $ob1 ->b = 100 ; $ob1 ->c = “Nguyen Ngoc Thuy Hang" ; $luu = serialize ($ob1 ); echo "$luu "; $ob2 = unserialize ($luu ); var_dump ($ob2 ); ?> 102
  103. Câu hỏi và thảo luận 103