Chương 5 Ngôn ngữ kịch bản PHP nâng cao

1. Cookie 2. Session 3. Gửi mail 4. Xử lý File 5. Chuyển hướng website với .htaccess 6. Bắt lỗi chương trình 7. Hướng đối tượng trong PHP

pdf49 trang | Chia sẻ: lylyngoc | Lượt xem: 1566 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Chương 5 Ngôn ngữ kịch bản PHP nâng cao, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NGÔN NGỮ KỊCH BẢN PHP NÂNG CAO Giảng viên : ThS. Nguyễn Minh Thành Email : thanhnm@itc.edu.vn Chương 5 : Môn Các Hệ Thống Mã Nguồn Mở 1 Nội Dung 1. Cookie 2. Session 3. Gửi mail 4. Xử lý File 5. Chuyển hướng website với .htaccess 6. Bắt lỗi chương trình 7. Hướng đối tượng trong PHP Môn Các Hệ Thống Mã Nguồn Mở 2 Cookie Môn Các Hệ Thống Mã Nguồn Mở 3 a- Cookie là mẫu tin nhỏ, có cấu trúc, dạng text lưu ở máy client khi truy cập một website (nếu kịch bản trong trang đó có chức năng thiết lập cookie).Cookie được lưu ở thư mục : C:\Documents and Settings\Administrator\Cookies Ví dụ đây là một mẫu cookie khi viếng trang www.ibm.com UnicaNIODID 4yZ3oOSlqrO-WrSL3kV ibm.com/ 1600 1465922944 30475811 543399952 30113713 * (tên tệp ndt@ibm[1]) ndt là PC name của client Cookie (tt) Môn Các Hệ Thống Mã Nguồn Mở 4 b- Thiết lập cookie Cú pháp: setcookie(name, value, expire[, path, domain]); Trong PHP, câu lệnh setcookie phải đặt trước thẻ Ví dụ : Trang CreateCookie.php <?php $expire=time()+60*60*24*30; // hết hạn sau 30 ngày setcookie(“username", “NguyenMinhThanh", $expire); echo "Cookie has been created!"; ?> Hàm time() trả về số giây đã trôi qua bắt đầu từ 01-Jan-1970 Một dạng thời gian dùng trong hệ điều hành Unix Cookie (tt) Môn Các Hệ Thống Mã Nguồn Mở 5 d- Đọc cookie Tệp ReadCookie.php <?php if (isset($_COOKIE[“username"])) echo "Welcome " . $_COOKIE[“username"] . "!"; else echo "Welcome guest!"; ?> $_COOKIE[] là một biến mảng toàn cục Hàm isset() kiểm tra một biến đã được khai báo, khởi gán chưa Session Môn Các Hệ Thống Mã Nguồn Mở 6 a- Session là một phiên làm việc kể từ khi client truy cập vào website cho đến khi đóng trình duyệt hay abandon(kết thúc) phiên. PHP đưa ra biến toàn cục $_SESSION[] để lưu trữ thông tin, và biến này có thể truy cập từ mọi trang PHP trong phiên. b- Khai báo và thiết lập Session session_start(); // hàm session_start() phải đặt trước thẻ $_SESSION['username']=“NguyenMinhThanh"; Ví dụ : Trang Save_Session.php <?php session_start(); $_SESSION['username']=“NguyenMinhThanh"; header("Location:Read_Session.php"); ?> Hàm header() chuyển hướng trình duyệt đến URL sau Location Session (tt) Môn Các Hệ Thống Mã Nguồn Mở 7 c- Truy cập biến Session Trang : Read_Session.php <? if(isset($_SESSION['username'])) $mess=$_SESSION['username']." đã đăng nhập"; else $mess=“Bạn chưa đăng nhập hệ thống!"; echo $mess; ?> d- Xóa bỏ biến Session unset($_SESSION[‘tên']); session_destroy(); Đây là các câu lệnh dùng khi Logout, tuy nhiên khi session_destroy() phải lưu ý, vì có xóa những biến Session của hệ thống không? Session (tt) Môn Các Hệ Thống Mã Nguồn Mở 8 Tóm tắt: Thiết lập session_start(); $_SESSION[‘tên’]=giá_trị; Truy cập: session_start(); $biến = $_SESSION[‘tên’]; Xóa giá trị đã thiết lập : unset($_SESSION[‘tên’]); Hủy bỏ toàn bộ biến $_SESSION[]: session_destroy(); Session có rất nhiều ứng dụng, ví dụ như lưu trữ thông tin về giỏ hàng trong E-commerce Môn Các Hệ Thống Mã Nguồn Mở 9 Xây dựng form Login “tự gọi” Một trang PHP tự gọi lại chính nó là một phong cách nhiều LTV PHP ưa thích. Dựa trên các kỹ thuật: -Chỗ nào cần đưa các giá trị php chỉ cần - Biến toàn cục lưu tên trang hiện thời : $_SERVER[‘PHP_SELF’] - Câu lệnh if .. else .. endif của PHP để điều khiển luồng HTML Từ những kiến thức trên ta xây dựng một form đăng nhập. Môn Các Hệ Thống Mã Nguồn Mở 10 <?php $user=$_REQUEST["ht"]; $pass=$_REQUEST["mk"]; // thay cho $_POST[] ?> You are'nt login! > User Name: Password: You are login. - Sinh viên hãy dùng include() để ghép vào một trang khác. Trang Login.php Gửi mail Môn Các Hệ Thống Mã Nguồn Mở 11 Cú pháp: mail(to,subject,message,headers,parameters) Ý nghĩa các tham số: - to, subject, message : như ý nghĩa các text box khi soạn mail - headers :tùy chọn, có thể sử dụng Bcc, Cc - parameter: tùy chọn, các thông số về trình soạn, gởi mail Trong phần message: sử dụng ký hiệu \n để xuống dòng. Môn Các Hệ Thống Mã Nguồn Mở 12 Ví dụ : Tệp Send_mail.php <?php // mình viết thư gởi cho mình $to = “ndthuong@dce.udn.vn"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = “ndt473@yahoo.com"; $headers = "From: $from"; @mail($to,$subject,$message,$headers); // không cho warning! echo "Mail Sent."; ?> Lưu ý: -người gởi phải có một đia chỉ mail. Theo dõi các kỹ thuật chống spam của mỗi trình gởi, nhận mail của người nhận! -Phối hợp với form để soạn thảo một trình gởi mail -Có thể lập trình để gởi mail đến danh sách các địa chỉ đã lưu trong CSDL Xử Lý File Môn Các Hệ Thống Mã Nguồn Mở 13 1. Mở file $file=fopen("welcome.txt","r") or exit("Unable to open file!"); Xử Lý File Môn Các Hệ Thống Mã Nguồn Mở 14 2- Đóng file fclose($file); Cách khác: Sử dụng hàm file(path) mở đọc file và đóng file luôn Ví dụ : $myfile = 'vanban.txt'; $lines = file($myfile); // trả về mảng các dòng văn bản echo("Số dòng: ".count($lines).""); // cũng có thể dùng foreach($lines as $key=>$value) foreach($lines as $line) { echo($line."");} 3- Kiểm tra EOF if (feof($file)) echo "End of file"; Xử Lý File Môn Các Hệ Thống Mã Nguồn Mở 15 4- Đọc từng dòng trong file <?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "";} fclose($file); ?> 5- Đọc từng ký tự trong file <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file);} fclose($file); ?> Xử Lý File Môn Các Hệ Thống Mã Nguồn Mở 16 6-Upload file <form action="upload_file.php" method="post" enctype="multipart/form- data"> Filename: Xử Lý File Môn Các Hệ Thống Mã Nguồn Mở 17 6-Upload file Upload_file.php <?php if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "";} else { echo "Upload: " . $_FILES["file"]["name"] . ""; echo "Type: " . $_FILES["file"]["type"] . ""; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . ""; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. " } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } ?> Cơ bản về .htaccess Môn Các Hệ Thống Mã Nguồn Mở 18 1. Định nghĩa htaccess: Apache cung cấp khả năng cấu hình thông qua những files truy cập siêu văn bản . Những files này cho phép thay đổi tinh chỉnh của Apache (httpd.conf) . Theo mặc định file này có tên .htaccess. .htaccess có tác dụng trên thư mục hiện hành (nơi chưa nó) và tất cả các thư mục con. Vì vậy, muốn sử dụng .htacess để quản lí truy cập vào website của mình, đơn giản bạn chỉ việc soạn thảo một file .htaccess, và lưu nó vào thư mục root của website. Cơ bản về .htaccess Môn Các Hệ Thống Mã Nguồn Mở 19 Dấu “#” này dùng để định nghĩa một đoạn comment trong httpd.conf, và .htaccess. Ví dụ : #Enable Rewrite mod <<<đây là comment, dòng này sẽ không được thực thi trong .htaccess RewriteEngine on Lưu ý : .htaccess là một công cụ rất mạnh trong việc quản lí website. Một lỗi cú pháp nhỏ (thậm chí là một khoản trắng) cũng khiến website của bạn hoạt động không được bình thường như trước. Do vậy trước khi làm việc với .htaccess, bạn nên backup cẩn thận dữ liệu của mình, nếu có trục trặc xảy ra, việc khôi phục trở nên đơn giản. Cơ bản về .htaccess • Những kí tự đặc biệt # : comment [F] : chỉ định server sẽ trả về client trang lỗi 403 nếu truy cập vào những nơi không được phép [L] : ấn định rằng bước trước đã xong thì ngừng và không tiếp tục thực thi lệnh rewrite tiếp theo nữa. [N] : chỉ thị cho server tiếp tục rewrite cho đến khi tất cả các mục chỉ định được rewrite hoàn toàn. [G] : Chỉ định server trả về client trang báo lỗi không tồn tại (no longer exit) [P] : chỉ định server điểu kiển các yêu cầu được ấn định bởi mod_proxy [C] : Chỉ định server thực hiện rule hiện hành song song với rule trước đó [R] : chỉ định server đổi hướng request sang một trang khác trong trường hợp trình duyệt gởi yêu cầu duyệt một trang được sửa chữa đường dẫn (rewrite) trước đó. Môn Các Hệ Thống Mã Nguồn Mở 20 Cơ bản về .htaccess • Những kí tự đặc biệt [NC] : Chỉ định server so khớp nhưng kí tự không phân biệt hoa thường. Ví dụ : RewriteCond %{HTTP_REFERER} ! h^ttp://domain.com/.*$ [NC] [PT]: có nghĩa là dùng kí tự để buộc "rewrite engine" ấn định bảng giá trị của uri trở thành giá trị của tên files [OR] : các biểu thức được nối tiếp nhau bằng toán tử OR, trong đó biểu thức nào đúng, sẽ là quy tắc để lệnh Rewrite áp dụng. Ví dụ: RewriteBase / RewriteCond %{HTTP_USER_AGENT} ^ Anarchie [OR] RewriteCond %{HTTP_USER_AGENT} ^ ASPSeek [OR] RewriteCond %{HTTP_USER_AGENT} ^ attach [OR] RewriteRule .^* - [F,L] [NE] : Chỉ định server xử lí các gói tin trả về mà không dùng kí tự thoát Môn Các Hệ Thống Mã Nguồn Mở 21 Cơ bản về .htaccess • Những kí tự đặc biệt [NS] : Chỉ định server bỏ qua thư mục hiện hành nếu request nhắm vào thư mục con. [QSA] : chỉ định server gắn chuỗi truy vấn vào cuối cùng của URL [S=x] : Chỉ định server bỏ qua không xem xét các X rules tiếp theo nữa nếu một rule đã được thực thi. [T=MIME-type] : Khai báo định dạng files của server [] : chỉ định các kí tự đặt đặt trong [] sẽ được match. Cụ thể [xyx] thì các request có mang theo các kí tự x, y hoặc z sẽ được match. + : chỉ định nội dung đừng trước dấu + phải xuất hiện ít nhất 1 lần [ ]^ : Ngược lại với [], các kí tự được đặt theo dạng [xyz ]^ sẽ không được match. [a-z] : Dấu ‘-‘ đặt giữa 2 kí tự bên trong cặp dấu [] sẽ match tất cả các kí tự nằm trong khoảng từ kí tự đầu đến kí tự cuối. Môn Các Hệ Thống Mã Nguồn Mở 22 Cơ bản về .htaccess • Những kí tự đặc biệt a{n} : chỉ định chính xác n kí tự a được match. Ví dụ a{3} thì 3 kí tự a sẽ được match. a{n,} : Tương tự như trên, nhưng trong trường hợp này sẽ match các kí tự a từ na trở lên. a{n,m} : Chỉ định một khoảng chính xác các kí tự (m-n)a sẽ được match. () : Nhóm các chuỗi ^ : Bắt đầu bằng $ : Kết thúc bằng ( .*$: kết thúc bằng bất cứ gì) ? : chuỗi có hoặc không ! : phủ định. VD: “!string” sẽ match tất cả các kí tự, ngoại trừ string - : Loại đi một chức năng, hoặc một rule đang thực thi nào đó. * : Tất cả đều được | : Hoặc \ : Kí tự thoát Môn Các Hệ Thống Mã Nguồn Mở 23 Cơ bản về .htaccess • Những kí tự đặc biệt -d : Kiểm tra thư mục có tồn tại hay không? -f : Kiểm tra file có tồn tại hay không -s : Kiểm tra giá trị của file có khác 0 hay không? Mã chuyển hướng trang báo lỗi - 401 - Authorization Required : Lỗi chưa được xác thực user và password - 400 - Bad request : Lỗi truy cập không hợp lệ, do server không chấp nhận request, hoặc request thiếu một số yêu cầu nào đó. - 403 - Forbidden : Lỗi truy cập vào trang bị cấm - 500 - Internal Server Error : Lỗi do server - 404 - Wrong page : Lỗi truy cập vào trang không tồn tại - 301 - Moved Permanently: 302 - Moved Temporarily: Lỗi truy cập vào trang đã bị di chuyển. Môn Các Hệ Thống Mã Nguồn Mở 24 Các ví dụ trong .htaccess Môn Các Hệ Thống Mã Nguồn Mở 25 1. Ngăn chặn hotlink Nhiều người copy ảnh từ server của bạn và đưa lên trang web của họ. Thêm vào .htaccess đoạn mã dưới đây sẽ giúp bạn ngăn chặn ảnh hiển thị trên website khác: Options +FollowSymlinks #No hotlink RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.com/ [nc] RewriteRule .*.(gif|jpg|png)$ [nc] Các ví dụ trong .htaccess Môn Các Hệ Thống Mã Nguồn Mở 26 2. 301 Redirect Nếu ta chuyển domain, hoặc chỉ muốn chuyển một trang cũ về một trang mới và không muốn lo lắng về các kết quả search từ google, sử dụng đoạn mã sau Redirect 301 /d/file.html 3. Viết lại tên miền cũ sang tên mới Sử dụng đoạn mã dưới đây để chuyển tất cả các link từ tên miền cũ sang tên miền mới: #Chuyển hướng từ tên miền cũ sang tên mới RewriteEngine On RewriteRule (^.*)$ [R=301,L] Các ví dụ trong .htaccess Môn Các Hệ Thống Mã Nguồn Mở 27 4. Tạo trang báo lỗi riêng Nếu không muốn dùng các trang báo lỗi có sẵn của host, ta có thể tạo các trang báo lỗi riêng và cấu hình vào file htaccess như sau: ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php 5. Cấm IP truy cập Nếu có 1 IP thường xuyên spam website, ta có thể cấm IP đó như dòng 2, hoặc cấm 1 dải IP như dòng 3: allow from all deny from 113.190.183.138 deny from 113.190 Các ví dụ trong .htaccess Môn Các Hệ Thống Mã Nguồn Mở 28 6. Bảo vệ file Đoạn mã dưới đây sẽ từ chối khi người dùng truy cập vào bất kỳ file nào và gửi về lỗi 403: #Protect .htaccess File order allow,deny deny from all 7. Đặt mã cho thư mục và file Đặt mã & quyền truy cập vào thư mục/file như sau: # Đặt mã cho thư mục resides AuthType basic AuthName "Thư mục này đã được bảo vệ" AuthUserFile /home/path/.htpasswd AuthGroupFile /dev/null Require valid-user # Đặt mã cho file AuthType Basic AuthName "Prompt" AuthUserFile /home/path/.htpasswd Require valid-user Các ví dụ trong .htaccess Môn Các Hệ Thống Mã Nguồn Mở 29 9. Đặt trang mặc định Đặt trang web mặc định cho thư mục nào đó. Ví dụ đặt file about.html thay cho file index.html: #Đặt trang mặc định (index) DirectoryIndex about.html 10. Bỏ một nội dung ở URL Để chuyển url từ: về -> bạn chỉ cần thêm vào file .htaccess đoạn mã sau RewriteRule c^ategory/(.+)$ [R=301,L] 11. Bỏ phần đuôi file ở URL Không muốn hiện .php ở url, hãy thêm đoạn code sau: RewriteRule (^([ /^]+/)*[ .^]+)$ /$1.php [L] Các ví dụ trong .htaccess Môn Các Hệ Thống Mã Nguồn Mở 30 12. Thêm / vào cuối URL Một vài bộ máy tìm kiếm (như Yahoo)tự động bỏ dấu / ở cuối url. Website cũng có thể được truy cập có hoặc không có dấu / ở sau cùng url. Điều này không tốt với các bộ máy tìm kiếm (sẽ bị coi là duplicated content). Thêm đoạn mã dưới đây vào .htaccess để giải quyết vấn đề đó: #Thêm / vào cuối URL RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !# RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule (^.*)$ [L,R=301] Các ví dụ trong .htaccess Môn Các Hệ Thống Mã Nguồn Mở 31 13. Không cho "browse" thư mục Để ngăn chặn truy cập vào tên file trong thư mục nào đó (ví dụ thư mục plugins của wordpress), thêm đoạn mã sau vào file .htacess: Options All -Indexes Nếu muốn cho phép browse thư mục bạn chỉ cần đổi lại là: Options All +Indexes Bắt lỗi chương trình • Khi có vấn đề trong quá trình thực thi, PHP luôn cố gắng đưa ra các thông báo lỗi hữu ích để người dùng (lập trình viên) xác định được vấn đề. Môn Các Hệ Thống Mã Nguồn Mở 32 Thay đổi mức độ bắt lỗi • Các cấu hình về thông báo lỗi nằm trong file php.ini • Cấu hình trong php.ini error_reporting = E_ALL & ~E_NOTICE display_errors = On | Off • Cấu hình bằng script error_reporting(OPTIONS); error_reporting(0); ini_set('display_errors',‘On'); Môn Các Hệ Thống Mã Nguồn Mở 33 Tự bắt lỗi chương trình Môn Các Hệ Thống Mã Nguồn Mở 34 • Khi chương trình thực thi có thể phát sinh lỗi ở một số hàm được gọi, nếu thấy không chắc chắn ta có thể bắt lỗi bằng hàm : die(“message”) functionname() or die(“message”); • Khi hàm functionname có lỗi hàm die sẽ dừng chương trình và xuất thông báo. • Trong chương trình có thể xảy ra những lỗi về logic, những lỗi này có thể được bắt thủ công • Hoặc đẩy lỗi lên cho PHP tự thông báo. If ($height_of_door > $height_of_house) { echo “This is impossible”; exit(); } If ($height_of_door > $height_of_house) { trigger_error(“Impossible condition”,E_USER_ERROR); } Hướng đối tượng trong PHP Môn Các Hệ Thống Mã Nguồn Mở 35 “Lập trình hướng đối tượng là 1 phương pháp viết mã cho phép các lập trình viên nhóm các action tượng tự nhau vào các class”. Điều này giúp mã lệnh giữ vững được nguyên lý DRY “don’t repeat yourself” (không lặp lại chính nó) và dễ dàng để bảo trì. Một lợi ích to lớn của nguyên lý lập trình DRY là: nếu một phần thông tin nào đó được thay đổi trong chương trình, thì thông thường chỉ cần có duy nhất 1 thay đổi để cập nhật lại mã lệnh. Một trong những ác mộng lớn nhất đối với các lập trình viên là bảo trì mã lệnh, nơi dữ liệu được khai báo đi khai báo lại nhiều lần, họ phải tìm kiếm, làm việc trên các dữ liệu và chức năng trùng lặp. Hướng đối tượng trong PHP Môn Các Hệ Thống Mã Nguồn Mở 36 Hiểu Về Đối Tượng (Objects) Và Lớp (Class) Nhiều lập trình viên có kinh nghiệm cho rằng hai khái niệm object và class có thể thay thế cho nhau. Tuy vậy, đây không phải là vấn đề đáng quan tâm, mặc dù sự khác nhau giữa object và class có thể sẽ rất phức tạp khiến bạn phải bù đầu để tìm hiểu khi mới tiếp xúc với chúng. Hướng đối tượng trong PHP Môn Các Hệ Thống Mã Nguồn Mở 37 Hiểu Về Đối Tượng (Objects) Và Lớp (Class) Một object sau đó, cũng giống như một ngôi nhà thực tế được xây dựng dựa trên bản thiết kế này. Dữ liệu trong object ở đây có thể được xem như là gỗ, dây điện, và bê tông để tạo nên ngôi nhà hoàn chỉnh: mà không hề có chi tiết cách tạo ra chúng trong bản thiết kế. Tuy nhiên, khi kết hợp tất cả lại với nhau, nó sẽ trở thành một ngôi nhà hoàn chỉnh đến từng chi tiết. Các Class xử lý cấu trúc dữ liệu và các action, đồng thời sử dụng các thông tin đó để xây dựng các object. Có thể có nhiều hơn một object được xây dựng từ cùng một class tại cùng một thời điểm, mỗi object này đều là 1 cá thể độc lập và không phụ thuộc lẫn nhau. Trở lại vấn đề xây dựng, điều này cũng giống như một quần thể các lô nhà có thể được xây dựng trên cùng một bản thiết kế: 150 ngôi nhà khác nhau đều có hình dạng giống nhau, nhưng có các hộ gia đình và nội thất bên trong đều khác nhau. Hướng đối tượng trong PHP Môn Các Hệ Thống Mã Nguồn Mở 38 a- Đặc điểm OOP trong PHP 5.0 : không cho phép đa kế thừa b- Khai báo class Class tên_class{ // khai báo thuộc tính, bản chất là biến dùng trong class // khai báo các phương thức, bản chất là các hàm. Riêng hàm dựng // phải cùng tên với tên của class // sử dụng từ khóa private hay public và protected để xác định chế // độ truy xuất } c- Sử dụng - Tạo biến đối tượng: $tên_object = new tên_class([giá trị khởi tạo]); - Sử dụng thuộc tính, phương thức: + $tên_object->tên_thuộc tính; + $tên_object->tên_phương thức([tham số]); Hướng đối tượng trong PHP (tt) Môn Các Hệ Thống Mã Nguồn Mở 39 Tệp Class1.php <?php class hoso{ public $ho_ten; public $ngay_sinh; function hoso($hten,$ngsinh){ $this->ho_ten = $hten; $this->ngay_sinh=$ngsinh; } } echo "Su dung ham constractor"; $hung=new hoso(“Nguyễn Minh Thành",“12/3/1985"); echo "Họ tên: " . $hung->ho_ten . “, Ngày sinh: " . $hung->ngay_sinh; ?> Ví dụ đơn giản Phương Thức Magic Trong OOP • Để giúp cho việc sử dụng các object trở nên thuận tiện hơn, PHP đã cung cấp một số phương thức magic, chúng thường được gọi khi có những action nhất định thường xuyên xảy ra trong các object. Điều này cho phép lập trình viên thực thi một số tác vụ hữu ích dễ dàng. • Phương thức Constructors (hàm dựng) và Destructors (hàm hủy) Khi một object được khởi tạo, nó thường kèm theo nhu cầu thiết lập một vài thứ ngoài lề. Để xử lý điều này, PHP cung cấp phương thức magic__construct(), phương thức này sẽ tự động được gọi ngay khi một object mới được khởi tạo. • Để gọi một hàm khi object bị hủy, chúng ta có sẵn phương thức magic__destruct(). Thông thường nó được sử dụng vào mục đích dọn dẹp một cái gì đó (ví dụ: đóng một kết nối cơ sở dữ liệu). Môn Các Hệ Thống Mã Nguồn Mở 40 Phương Thức Magic Trong OOP Môn Các Hệ Thống Mã Nguồn Mở 41 Phương Thức Magic Trong OOP Môn Các Hệ Thống Mã Nguồn Mở 42 Phươ
Tài liệu liên quan