Copyright © 2013 - Khoa Công nghệ thông tin – Đại học Khoa học tự nhiên, Tp.HCM
Phát triển ứng dụng web với PHP và MySQL
PHPMySQL
Jun 2013
http://www.e-learning.vn
Chủ đề 5:Hướng đối tượng trong PHP
Tổng quan về khai báo lớp đối tượng, sử dụng đối tượng trong PHP
Khai báo thuộc tính, phương thức, …
Lương Vĩ Minh
Web Programming Php & MySQL - 2013
Nội dung
Khai báo lớp
Khai báo đối tượng
Thuộc tính của lớp
Phương thức của lớp
Lớp kế thừa
Lớp ảo
3
Web Programming Php & MySQL - 2013
Nội dung
Khai báo lớp
Khai báo đối tượng
Thuộc tính của lớp
Phương thức của lớp
Lớp kế thừa
Lớp ảo
4
Web Programming Php & MySQL - 2013
Khai báo lớp
class ClassName
{
scope $FieldName;
scope function funcName([parameters])
{
[return value;]
}
}
5
Field scope: var / public / private / protected / static / finalFunction scope: public / private / protected / static / final
• Quy tắc đặt tên: Tuân theo quy tắc đặt tên biến, tên hàm• Mặc định hàm lấy scope là public• Nếu không khai báo thuộc tính, hệ thống tự tạo thuộc tính lúc sử dụng• Trong xử lý lớp, sử dụng con trỏ $this-> để truy xuất thuộc tính / hàm
Web Programming Php & MySQL - 2013
Khai báo lớp – Ví dụ
6
Web Programming Php & MySQL - 2013
Khai báo đối tượng
Sử dụng toán tử new để khai báo đối tượng
Sử dụng toán tử -> để truy xuất thuộc tính / phương thức có phạm vi public / var
7
Không có dấu $
Web Programming Php & MySQL - 2013
Khai báo lớp – Khai báo đối tượng (lưu ý)
Trong một file, chỉ nên khai báo 1 lớp đối tượng
Tên file nên trùng tên với tên lớp
Nếu khai báo nhiều lớp trong 1 file thì phải có dấu ; cách giữa các lớp
Khai báo lớp trong 1 file *.php nên tách biệt so với các file khai báo đối tượng của lớp
Sử dụng kèm từ khóa include_once trong file khai báo đối tượng
8
Web Programming Php & MySQL - 2013
Khai báo lớp – Khai báo đối tượng (Ví dụ)
9
02-DeclareNote.php
index.php
Web Programming Php & MySQL - 2013
Khai báo lớp – Khai báo đối tượng (Ví dụ)
10
03-DeclareDiem.php
03-DeclareDuongthang.php
index.php
Web Programming Php & MySQL - 2013
Nội dung
Khai báo lớp
Khai báo đối tượng
Thuộc tính của lớp
Phương thức của lớp
Lớp kế thừa
Lớp ảo
12
Web Programming Php & MySQL - 2013
Thuộc tính của lớp
Phạm vi của thuộc tính:
public / var
private
protected
final
static
13
class ClassName
{
scope $FieldName;
}
Web Programming Php & MySQL - 2013
Thuộc tính hằng
Cú pháp:
const TenBienHang = Giátrị;
Cách gọi giá trị hằng của lớp:
className::TenBienHang
14
Web Programming Php & MySQL - 2013
Phương thức của lớp
Phạm vi của phương thức:publicprivate protectedabstract : Chỉ sử dụng trong lớp ảofinalstatic
15
class ClassName
{
scope function funcName([parameters])
{
[return value;]
}
}
Web Programming Php & MySQL - 2013
Phương thức của lớp
Khai báo tường minh tham số đối tượng, mảng
Khi thực thi, hàm sai kiểu DL tham số sẽ bị báo lỗi cú pháp.
16
class ClassName
{
scope function funcName(ClassName para1, paramenters)
{
[return value;]
}
}
Web Programming Php & MySQL - 2013
Phương thức của lớp – Ví dụ
Khai báo lớp SinhVien gồm các thuộc tính: MSSV, HoTen, NgaySinh, DiaChi
Khai báo lớp LopHoc gồm các thuộc tính: MaLop, TenLop, Danh sách sinh viên
17
Web Programming Php & MySQL - 2013
Phương thức của lớp - Constructor
Mỗi class chỉ được khai báo duy nhất một constructor
19
class ClassName
{
function __construct([parameters])
{
---------
}
}
Web Programming Php & MySQL - 2013
Phương thức của lớp - Constructor
20
Web Programming Php & MySQL - 2013
Phương thức của lớp - Destructor
Mỗi class chỉ được khai báo duy nhất một destructor
21
class ClassName
{
function __destruct()
{
--------
}
}
Web Programming Php & MySQL - 2013
Thuộc tính và phương thức static
22
Chỉ hàm static mới sử dụng được biến
static
Không sử dụng$this trong hàm
static
Web Programming Php & MySQL - 2013
Thuộc tính và phương thức static
Sử dụng thuộc tính static Trong lớp : self::$FieldNameNgoài lớp : className::$FieldName
Sử dụng phương thức static Trong lớp : self::funcName(…)Ngoài lớp : className::funcName(…)
23
class ClassName
{
scope static $FieldName;
scope static function funcName([parameters])
{
[return value;]
}
}
Web Programming Php & MySQL - 2013
Một số hàm và toán tử đặc biệt
$bien instanceof className
true : nếu $biến là đối tượng kiểu className
false: nếu $biến không là đối tượng kiểu className
boolean class_exists(string “className”)
boolean method_exists(Obj, “className”)
string get_class(object Obj)
array get_class_method(className)
array get_class_vars(className)
24
Web Programming Php & MySQL - 2013
Sao chép đối tượng trong PHP
25
Sử dụng phép clone
Web Programming Php & MySQL - 2013
Nội dung
Khai báo lớp
Khai báo đối tượng
Thuộc tính của lớp
Phương thức của lớp
Lớp kế thừa
Lớp ảo
26
Web Programming Php & MySQL - 2013
Lớp kế thừa
Sử dụng parent:: để truy xuất thuộc tính và phương thức của lớp cha
Không hỗ trợOverload phương thức, thuộc tínhOverload toán tửĐa kế thừa
27
class ClassName extends ParentClassName
{
scope $FieldName;
scope function funcName([parameters])
{
[return value;]
}
}
Web Programming Php & MySQL - 2013
Lớp ảo
Không tạo đối tượng từ lớp Abstract
Không kế thừa được lớp khác
28
abstract class ClassName
{
scope $FieldName;
scope function funcName([parameters])
{
[return value;]
}
}
Web Programming Php & MySQL - 2013 29