Vâng, nó có thể được thực hiện. Trích dẫn từ PHP manual ..
Khả năng hiển thị thuộc tính hoặc phương pháp có thể được xác định bằng cách đặt trước tuyên bố với từ khóa công khai, được bảo vệ hoặc riêng tư. Lớp thành viên được khai báo công khai có thể được truy cập ở mọi nơi. Các thành viên được tuyên bố là được bảo vệ chỉ có thể được truy cập trong chính lớp đó và bởi các lớp kế thừa và cha mẹ. Các thành viên được khai báo là riêng tư chỉ có thể được truy cập bởi lớp xác định thành viên là .
Và ví dụ từ đó cũng ..
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private
Sửa: Vâng, bạn có thể thay đổi tầm nhìn của các thành viên cộng đồng và bảo vệ. Một ví dụ khác từ PHP tay ..
/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// We can redeclare the public and protected method, but not private
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj2->public; // Works
echo $obj2->private; // Undefined
echo $obj2->protected; // Fatal Error
$obj2->printHello(); // Shows Public, Protected2, Undefined
?>
Có, và điều này thực sự khác với C++ (nơi bạn không thể 'ở trên' bộ sửa đổi hiển thị trong lớp dẫn xuất). – raina77ow
được, cảm ơn bạn! –
Bạn có thể chỉ cho chúng tôi cách thay đổi mức độ hiển thị của một thuộc tính được bảo vệ trong cơ sở thành công khai trong nguồn gốc không? Cảm ơn! –