在PHP中,stdClass是一個通用的空對象,用于存儲鍵值對。要實現數據封裝,我們可以使用以下方法:
創建一個名為Person的類,該類包含私有屬性$name和$age,然后提供公共的getter和setter方法來訪問和修改這些屬性。
class Person {
private $name;
private $age;
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
}
public function getAge() {
return $this->age;
}
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo "Invalid age";
}
}
}
$person = new Person();
$person->setName("John");
$person->setAge(30);
echo $person->getName(); // Output: John
echo $person->getAge(); // Output: 30
在類中使用魔術方法__get和__set可以在訪問或修改屬性時自動執行某些操作。
class Person {
private $data = array();
public function __set($key, $value) {
$this->data[$key] = $value;
}
public function __get($key) {
if (array_key_exists($key, $this->data)) {
return $this->data[$key];
} else {
return null;
}
}
}
$person = new Person();
$person->name = "John";
$person->age = 30;
echo $person->name; // Output: John
echo $person->age; // Output: 30
這兩種方法都可以實現數據封裝,使類的屬性更加安全且易于維護。