26
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 PHP MySQL 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

05-OOP in PHP

Embed Size (px)

Citation preview

Page 1: 05-OOP in PHP

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

Page 2: 05-OOP in 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

3

Page 3: 05-OOP in 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

4

Page 4: 05-OOP in PHP

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

Page 5: 05-OOP in PHP

Web Programming Php & MySQL - 2013

Khai báo lớp – Ví dụ

6

Page 6: 05-OOP in PHP

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 $

Page 7: 05-OOP in PHP

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

Page 8: 05-OOP in PHP

Web Programming Php & MySQL - 2013

Khai báo lớp – Khai báo đối tượng (Ví dụ)

9

02-DeclareNote.php

index.php

Page 9: 05-OOP in 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

Page 10: 05-OOP in 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

Page 11: 05-OOP in PHP

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;

}

Page 12: 05-OOP in PHP

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

Page 13: 05-OOP in PHP

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;]

}

}

Page 14: 05-OOP in PHP

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;]

}

}

Page 15: 05-OOP in PHP

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

Page 16: 05-OOP in PHP

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])

{

---------

}

}

Page 17: 05-OOP in PHP

Web Programming Php & MySQL - 2013

Phương thức của lớp - Constructor

20

Page 18: 05-OOP in PHP

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()

{

--------

}

}

Page 19: 05-OOP in PHP

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

Page 20: 05-OOP in PHP

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;]

}

}

Page 21: 05-OOP in PHP

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

Page 22: 05-OOP in PHP

Web Programming Php & MySQL - 2013

Sao chép đối tượng trong PHP

25

Sử dụng phép clone

Page 23: 05-OOP in 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

26

Page 24: 05-OOP in PHP

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;]

}

}

Page 25: 05-OOP in PHP

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;]

}

}

Page 26: 05-OOP in PHP

Web Programming Php & MySQL - 2013 29