05-OOP in PHP

Preview:

Citation preview

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

Recommended