Lập trình Web PHP - Chương 2: PHP cơ bản
1.1. Giới thiệu PHP 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 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)
> Test(); Test(); ?> ? 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 73 4. Kiểm tra file 5. Đọc, ghi file 6. Làm việc với thư mục 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, 74 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 11. Làm việc với tập tin và thư mục //vars.php <?php $color = 'green'; $fruit = 'apple'; ?> //test.php <?php return 4 + 4; ?> Vì include() thực hiện lời gọi đến file php, do đó bạn có thể trả về giá trị từ file PHP đýợc include 75 <?php echo "A $color $fruit"; // A include 'vars.php'; echo "A $color $fruit"; // A green apple ?> ------------------------------------ <?php echo "This is from file 2"; $retVal = include("file1.php"); echo “Value file 1: $retVal"; echo "This is from file 2\n"; ?> 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à 76 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. 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 77 <?php include_once("a.php"); // this will include a.php include_once("A.php"); // this will include a.php again on Windows! ?> Vì phân biệt chữ hoa/thường nên include_one chèn thêm lần thứ hai 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 78 đượ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) 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() <?php var_dump(get_include_path()); set_include_path('/inc'); // Works as of PHP 4.3.0 var_dump(get_include_path()); restore_include_path(); 79 var_dump(get_include_path()); ?> dùng lệnh ini_set() <?php var_dump(ini_get("include_path")); ini_set("include_path", "/inc"); // Works in all PHP versions var_dump(ini_get("include_path")); ini_restore("include_path"); var_dump(ini_get("include_path")); ?> 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() <?php function outputFileTestInfo( $file ) { if ( ! file_exists( $file ) ) { print "$file does not exist"; return; } print "$file is ".(is_file( $file )?"":"not ")."a file\n"; 80 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"); ?> 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); 81 fscanf($handle, $format); fseek($handle, $offset); fclose($handle); file_get_contents($filename); 11. Làm việc với tập tin và thư mục <?php $var1 = 10; $var2 = "This is a String"; $var3 = true; $f = fopen("test.txt", "wt"); fwrite($f, "$var1 $var2 $var3\n"); fwrite($f, "$var1\n$var2\n$var3\n"); fclose($f); echo "Read all file by fread......\n"; $f = fopen("test.txt", "rb"); $myfile = fread($f, filesize("test.txt")); echo $myfile; 82 echo "Read line by line......\n"; $f = fopen("test.txt", "rt"); while (!feof($f)) { $line = fgets($f); echo "$line"; } fclose($f); fclose($f); echo "Read all file......\n"; $myfile = file_get_contents("test.txt"); echo($myfile); ?> 11. Làm việc với tập tin và thư mục <?php $var1=10; $var2=100; $var3=100.3434; $var4="Test string"; $f=fopen("test.txt", "wt"); fwrite($f, sprintf("%d %10.3f %10.3lf\n\r", $var1, $var2, $var3)); fwrite($f, sprintf("%s", $var4)); fclose($f); 83 $f=fopen("test.txt", "rt"); if (list($v1, $v2, $v3, $v4) = fscanf($f, "%d %f %lf\n\r%s")) { var_dump($v1); var_dump($v2); var_dump($v3); var_dump($v4); } $v4 = fgets($f); var_dump($v4); fclose($f); ?> 11. Làm việc với tập tin và thư mục <?php class AClass { }; $ob1 =& new AClass(); $ob1->a = 10; $ob1->b = 100.023; $ob1->c = "Test String"; var_dump($ob1); 84 $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); ?> 11. Làm việc với tập tin và thư mục • mkdir(), rmdir() • opendir(), readdir(), closedir() <?php $dir=opendir("c:\\windows"); while ($file=readdir($dir)) { 85 echo "$file\n"; } closedir($dir); ?> 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 đã 86 đoá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 12. Lớp và Đối tượng trong PHP • Khai báo lớp • Hàm tạo • Phạm vi 87 • Kế thừa • Hàm serialize,unserialize 12. Lớp và Đối tượng trong PHP • Khai báo 88 • Hàm tạo 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 89 $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; 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 ngoà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 90 • 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 toán tử -> để truy xuất đến member và method 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 } 91 91 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 12. Lớp và Đối tượng trong PHP 92 Lập trình hướng đối tượng: constant • Khai báo const TÊN_HẰNG = giá trị; • Truy xuất 93 tên_lớp::TÊN_HẰNG // ngoài lớp seft::TÊN_HẰNG // trong lớp Lập trình hướng đối tượng: static member • Khai báo … static $thuộc_tính • Truy xuất 94 tên_lớp::$thuộc_tính // ngoài lớp seft::$thuộc_tính // trong lớp Lập trình hướng đối tượng: static method • Khai báo … static function phương_thức(…) • Truy xuất 95 tên_lớp::phương_thức(…) // ngoài lớp seft:: phương_thức(…) // trong lớp 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 96 } 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 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ó ở 97 lớp cha, tất cả các lời gọi đến phương thức này mà không chỉ định rõ như trên sẽ được hiểu là gọi phương thức có cùng tên của lớp con 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(…); 98 … // 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 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 99 final public function không_thể_nạp_chồng(…) { … } Lập trình hướng đối tượng: interface • Khai báo Interface interface giao_diện { public function phương_thức(); … } 100 • 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ất cả các phương thức trong Interface đó 12. Lớp và Đối Tượng trong PHP 101 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() <?php class AClass { var $a; function AClass() { } 102 }; $ob1 = new AClass(); $ob1->a = 10; $ob1->b = 100; $ob1->c = “Nguyen Ngoc Thuy Hang"; $luu = serialize($ob1); echo "$luu "; $ob2 = unserialize($luu); var_dump($ob2); ?> Câu hỏi và thảo luận 103
File đính kèm:
- Lập trình Web PHP - Chương 2_PHP cơ bản.pdf