Bài giảng Công nghệ web và ứng dụng - Phần 2: Lập trình hướng đối tượng trong PHP - Nguyễn Hoàng Tùng

Nội dung chính của phần này

Giới thiệu.

Khai báo một lớp.

Thuộc tính, phương thức.

Truy cập các thành phần của lớp bằng $this.

Giải quyết vấn đề không cho phép overloading trong PHP.

Hàm tạo (__construct).

Hàm hủy (__destruct).

Thành phần static.

Kế thừa (extends).

Hàm lấy tên lớp đang thực thi __autoload.

pdf 15 trang phuongnguyen 7000
Bạn đang xem tài liệu "Bài giảng Công nghệ web và ứng dụng - Phần 2: Lập trình hướng đối tượng trong PHP - Nguyễn Hoàng Tùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ web và ứng dụng - Phần 2: Lập trình hướng đối tượng trong PHP - Nguyễn Hoàng Tùng

Bài giảng Công nghệ web và ứng dụng - Phần 2: Lập trình hướng đối tượng trong PHP - Nguyễn Hoàng Tùng
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 
 TRONG PHP 
 Giảng viên phụ trách: 
 Nguyễn Hoàng Tùng 
 Bộ môn Tin học 
 Email: nhoangtung@agu.edu.vn 
Nội dung chính của phần này 
 Giới thiệu. 
 Khai báo một lớp. 
 Thuộc tính, phương thức. 
 Truy cập các thành phần của lớp bằng $this. 
 Giải quyết vấn đề không cho phép overloading trong PHP. 
 Hàm tạo (__construct). 
 Hàm hủy (__destruct). 
 Thành phần static. 
 Kế thừa (extends). 
 Hàm lấy tên lớp đang thực thi __autoload. 
20/08/2012 Công nghệ Web và Ứng dụng 2 
Giới thiệu 
 OOP chỉ có trong phiên bản từ PHP 5.x về sau. 
 Đặc điểm OOP trong PHP 5.x: Không cho phép đa kế thừa! 
20/08/2012 Công nghệ Web và Ứng dụng 3 
Khai báo một lớp 
 Khai báo lớp: 
 class tên_lớp 
 { 
 //khai báo thuộc tính 
 //khai báo phương thức 
 //sử dụng private hay public và protected để xác định phạm vi 
 } 
  Với PHP5.x, tất cả các thành viên của một lớp đều phải được 
 khai báo tính rõ ràng với các từ khoá tương ứng là public, 
 protected và private. 
01/08/2012 Lập trình Web 4 
Khai báo một lớp 
 Không khai báo lớp: 
 Trong nhiều file, 
 Trong nhiều khối lệnh, 
 Bắt đầu bằng __ (đối với tên lớp và tên phương thức). 
 Sử dụng: 
 Tạo biến đối tượng: 
 • $tên_object = new tên_class([giá trị khởi tạo]); 
 • $sv = new SinhVien("Nguyen Hoang Tung"); 
 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ố]); 
01/08/2012 Lập trình Web 5 
Khai báo một lớp 
 Ví dụ đơn giản: 
 <?php 
 class SinhVien Nên khởi gán 
 { giá trị ban đầu. 
 private $mSSV = ""; 
 private $hoTen = ""; 
 public function SinhVien($mS, $hTen) //Hàm dựng 
 { 
 $this->mSSV = $mS; 
 $this->hoTen = $hTen; 
 } 
 } 
 $sv = new SinhVien("DTH051187", "Hoang Tung"); 
 echo "Mã số SV: ".$sv->mSSV.", Họ tên: ".$sv->hoTen; 
 ?> 
01/08/2012 Lập trình Web 6 
Biến $this 
 Khi sử dụng các biến thành phần, bắt buộc phải sử dụng từ 
 khóa $this. 
 <?php 
 class SinhVien 
 { 
 private $mSSV = ""; 
 private $hoTen = ""; 
 public function SinhVien($mS, $hTen) //Hàm dựng 
 { 
 $this->mSSV = $mS; 
 $this->hoTen = $hTen; Đúng! 
 $this->$mSSV = $mS; 
 $this->$hoTen = $hTen; Sai! 
 } 
 } 
 ?> 
20/08/2012 Công nghệ Web và Ứng dụng 7 
Nạp chồng hàm (Overloading) 
 Không cho phép nạp chồng hàm. 
 Để giải quyết vấn đề này, ta sử dụng hàm có tham số mặc 
 định. 
 <?php 
 class SinhVien 
 { 
 private $mSSV = ""; 
 private $hoTen = ""; 
 public function SinhVien($mS = "", $hTen = "") 
 { 
 $this->mSSV = $mS; 
 $this->hoTen = $hTen; 
 } 
 } 
 ?> 
20/08/2012 Công nghệ Web và Ứng dụng 8 
Hàm tạo (Contructor) 
 Có 2 loại hàm tạo: 
 Hàm tạo thông thường: Tên hàm giống tên lớp. 
 Hàm tạo tự động thực thi: __construct() 
 Khi cài đặt, chỉ sử dụng một trong 2 loại hàm tạo trên. 
20/08/2012 Công nghệ Web và Ứng dụng 9 
Hàm hủy (Destructor) 
 __destruct() 
 Thường được dùng để dọn dẹp, đóng kết nối tới CSDL. 
20/08/2012 Công nghệ Web và Ứng dụng 10 
Đối tượng static 
 Lưu ý, không áp dụng static đối với hàm tạo. 
 <?php 
 class SinhVien 
 { 
 private static $mSSV = ""; 
 private $hoTen = ""; 
 public function SinhVien($mS = "", $hTen = "") 
 { 
 self::$mSSV = $mS; 
 $this->hoTen = $hTen; 
 } 
 } 
 ?> 
20/08/2012 Công nghệ Web và Ứng dụng 11 
Đối tượng static 
 Lưu ý, không cần sử dụng new để khai báo đối tượng. 
 <?php 
 class SinhVien 
 { 
 private static $mSSV = ""; 
 private static $hoTen = ""; 
 public static function HienThi() 
 { 
 echo "MSSV: " . self::$mSSV; 
 echo "Họ tên: " . self::$hoTen; 
 } 
 } 
 SinhVien::HienThi(); 
 ?> 
20/08/2012 Công nghệ Web và Ứng dụng 12 
Kế thừa 
 Dùng từ khóa extends để thể hiện kế thừa: 
 class SinhVienTH extends SinhVien {} 
 <?php 
 class SinhVienTH extends SinhVien { 
 private $soTinChi = 0; 
 public function SinhVienTH($mS, $hTen, $sTC) { 
 parent::SinhVien($mS, $hTen); 
 $this->soTinChi = $sTC; 
 } 
 public function HienThi() { 
 parent::HienThi($mS, $hTen); 
 echo "Số tín chỉ: " . $this->soTinChi; 
 } 
 } 
 ?> 
20/08/2012 Công nghệ Web và Ứng dụng 13 
Hàm __autoload 
 Hàm __autoload() không phải là thành phần của lớp. 
 Khi thực thi nó sẽ trả về tên lớp được khai báo ngay sau nó. 
 Sử dụng rất tốt trong việc tối ưu hóa dòng lệnh. 
 <?php 
 function __autoload($className) 
 { 
 echo $className; 
 } 
 $sv = new SinhVien("DNH101234", "An"); 
 $sv->HienThi(); 
 $svth = new SinhVienTH("DTH101111", "Tuấn", 30); 
 $svth->HienThi(); 
 ?> 
20/08/2012 Công nghệ Web và Ứng dụng 14 
Giải đáp thắc mắc 
20/08/2012 Công nghệ Web và Ứng dụng 15 

File đính kèm:

  • pdfbai_giang_cong_nghe_web_va_ung_dung_phan_2_lap_trinh_huong_d.pdf