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
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ươ