![]() |
![]() |
|
|
|||||||
| Thiết kế lập trình .PHP Các vấn đề liên quan .PHP |
![]() |
|
|
LinkBack | Công Cụ | Dạng sắp xếp bài |
|
|||
|
Lập trình hướng đối tượng trong PHP 5
a. Khai báo lớp và thể hiện của lớp trong PHP Như chúng ta đã biết, một lớp bao gồm các kiểu thuộc tính và phương thức. Trong PHP5, chúng ta khai báo một lớp với cú pháp như sau: Code: class tên_lớp { // Danh sách các biến, hằng, lớp... (thuộc tính) // Danh sách các hàm (phương thức) } Trong đó, các lớp được khai báo thông qua từ khoá class, các thuộc tính được khai báo dưới dạng các biến, còn các phương thức được xây dựng dưới dạng các hàm. Các thuộc tính và các phương thức trong lập trình hướng đối tượng có thể được thiết lập những tính chất đặc biệt như : riêng tư (private), công cộng (public)... Các tính chất này thường được đặt trước các khai báo thuộc tính và phương thức. Ví dụ đơn giản dưới đây thể hiện một lớp có tên là ho_so với các thuộc tính công cộng bao gồm ho_ten, ngay_sinh: Code: class hoso { public $ho_ten; public $ngay_sinh; } Đoạn mã trên mới chỉ khai báo một lớp thực thể với hai biến là $ho_ten và $ngay_sinh. Bây giờ chúng ta sẽ khai báo một thể hiện của lớp trên. Để khai báo một thể hiện của một lớp, ta dùng từ khoá new, tiếp đó là tên lớp: $ten_thuc_the = new ten_lop; Để truy cập vào từng thuộc tính hay phương thức của lớp, ta dùng toán tử -> với cú pháp như sau: $ten_thuc_the-->ten_thuoc_tinh; Ví dụ sau đây sẽ tạo ra một thực thể của một cá nhân có tên là Hoàng: Code: <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </HEAD> <BODY> <? class hoso { public $ho_ten; public $ngay_sinh; } $hoang=new hoso; $hoang->ho_ten="Nguyễn Huy Hoàng"; $hoang->ngay_sinh = "25/7/2003"; echo "Họ tên: " . $hoang->ho_ten . ". Ngày sinh: " . $hoang->ngay_sinh; ?> </BODY> </HTML> Bây giờ, chúng ta sẽ trang bị thêm một phương thức để thay đổi giá trị của các thuộc tính ho_ten và ngay_sinh. Để tham chiếu tới các phần tử trong chính bản thân lớp đối tượng, chúng ta sử dụng biến $this và toán tử tham chiếu ->, theo sau đó là tên của phương thức hoặc thuộc tính: Code: <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </HEAD> <BODY> <? class hoso { public $ho_ten; public $ngay_sinh; public function lap_gia_tri($hoten,$ngaysinh) { $this->ho_ten = $hoten; $this->ngay_sinh=$ngaysinh; } } $hoang=new hoso; $hoang->lap_gia_tri("Nguyễn Huy Hoàng","25/7/2003"); echo "Họ tên: " . $hoang->ho_ten . ". Ngày sinh: " . $hoang->ngay_sinh; ?> </BODY> </HTML> Chú ý rằng khi khai báo một lớp, chúng ta cũng có thể thiết lập những giá trị mặc định ban đầu cho tất cả các thành viên được tạo ra từ lớp đó. Ví dụ: Code: <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </HEAD> <BODY> <? class hoso { public $ho_ten = "Nguyễn Huy Hoàng"; public $ngay_sinh = "25/7/2003"; public function lap_gia_tri($hoten,$ngaysinh) { $this->ho_ten = $hoten; $this->ngay_sinh=$ngaysinh; } } $hoang=new hoso; echo "Họ tên: " . $hoang->ho_ten . ". Ngày sinh: " . $hoang->ngay_sinh; ?> </BODY> </HTML> Cơ chế đóng kín và tính rõ ràng của các phần tử trong lớp Như chúng ta đã biết, lập trình hướng đối tượng tập trung vào việc “đóng gói” các phương thức và thuộc tính của một đối tượng nào đó. Trong lập trình hướng đối tượng, các thành viên trong một lớp cần phải được xác định xem chúng có thể được truy xuất từ đâu (tính rõ ràng). Có ba khả năng xảy ra: - Chế độ truy xuất công cộng (public): Các thành viên nếu được thiết lập ở chế độ này sẽ được nhìn thấy và truy xuất ở mọi nơi trong chương trình. - Chế độ truy xuất riêng tư (private): Các thành viên nếu được thiết lập ở chế độ này sẽ chỉ được nhìn thấy và truy xuất được ở bản thân lớp định nghĩa thành viên đó. - Chế độ bảo vệ (protected): Chế độ này sẽ được dùng để giới hạn truy cập tới các lớp được thừa kế và bản thân lớp định nghĩa thành viên đó. Trong PHP5, 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. Ví dụ: Code: <?php class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; public function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj = new MyClass(); echo $obj->public; // Làm việc tốt echo $obj->protected; // Gây lỗi do thuộc tính $protected đã bị đặt ở chế độ bảo vệ echo $obj->private; // Gây lỗi do thuộc tính $protected đã bị đặt ở chế độ riêng tư $obj->printHello(); // Hoạt động bình thường, do các thuộc tính được triệu gọi bên trong một phương thức nằm trong lớp. class MyClass2 extends MyClass { protected $protected = 'Protected2'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj2 = new MyClass2(); echo $obj->public; // Chạy tốt echo $obj2->private; // Chưa được định nghĩa echo $obj2->protected; // Gây lỗi $obj2->printHello(); // Hiển thị Public, Protected2, not Private ?> |
![]() |
| Tags |
| lớp đơn giản, trong php 5, xây dựng |
| Công Cụ | |
| Dạng sắp xếp bài | |
|
|