| 修飾符 | 訪問範圍 |
|---|---|
public | 類內部、外部、子類均可訪問 |
private | 僅本類內部可訪問 |
protected | 本類、子類、父類可訪問 |
<?php
class Test {
public $name = 'Janking';
public $sex = 'male';
public $age = 23;
function __construct() {
echo $this->age . '<br />' . $this->name . '<br />' . $this->sex . '<br />';
}
function func() {
echo $this->age . '<br />' . $this->name . '<br />' . $this->sex . '<br />';
}
}
$P = new Test();
echo '<br /><br />';
$P->age = 100;
$P->name = "Rainy";
$P->sex = "female";
$P->func();
?>
<?php
class Test {
private $name = 'Janking';
private $sex = 'male';
private $age = 23;
function __construct() {
$this->funcOne();
}
function func() {
echo $this->age . '<br />' . $this->name . '<br />' . $this->sex . '<br />';
}
private function funcOne() {
echo $this->age . '<br />' . $this->name . '<br />' . $this->sex . '<br />';
}
}
$P = new Test();
echo '<br /><br />';
// 以下均會報錯:
// $P->age = 100; // Cannot access private property
// $P->name = "Rainy"; // Cannot access private property
// $P->sex = "female"; // Cannot access private property
// $P->funcOne(); // Call to private method
$P->func(); // 僅能調用公共方法
?>
protected 允許本類、子類、父類訪問,常用於封裝配合魔術方法:
isset() 時自動調用。unset() 時自動調用。善用訪問控制與魔術方法,可實現屬性訪問的攔截、驗證與代理,增強封裝性。