các lớp được thừa kế và bản thân lớp định nghĩa thành viên đó.
Với 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. tính rõ ràng với các từ khoá tương ứng là public, protected và private.
Môn Các Hệ Thống Mã Nguồn Mở 51
Ví dụ minh họa các từ khóa private, protected và public
<?php
class MyClass{
public $public = 'Public 1'; // truy xuất mọi nơi ∈ trang
private $private = 'Private 1'; // chỉ t.x được bên trong lớp
protected $protected = 'Protected 1'; // không cho kế thừa,private
public function printHello(){ // được truy xuất mọi thuộc
echo $this->public."<br>"; // bên trong lớp
echo $this->protected."<br>"; echo $this->private."<br>"; }
}
class MyClass2 extends MyClass{ // thừa kế từ lớp MyClass
protected $protected = 'Protected2';
function printHello(){ // chồng hàm
echo $this->public."<br>"; // thừa kế từ MyClass
echo $this->protected."<br>"; // lấy thuộc tính riêng
echo $this->private."<br>"; // không thừa kế từ MyClass
} }
Môn Các Hệ Thống Mã Nguồn Mở 52
$obj = new MyClass(); echo $obj->public; /
echo $obj->protected; // lỗi: $protected đã bị đặt ở chế độ bảo vệ echo $obj->private; // lỗi: $private đã 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.
$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 ?>
Hỏi Đáp ?
Môn Các Hệ Thống Mã Nguồn Mở 53