访问说明符
在了解封装的概念之前,了解访问说明符的概念非常重要.访问说明符定义了类的成员(属性和方法)的访问类型,PHP 中有三种类型的访问说明符。
- public: 类的成员可以从任何地方访问。它也是默认访问说明符。
- protected:类的成员可在类内和派生类访问。
- private: 类的成员只能在类内访问。
示例:
在下面的示例中,名为 person 的类创建它有一个名为 name 的私有属性。当在程序中访问它时,它会引发异常,因为它是私有属性,不能在定义它的类之外访问它。
<?php
class person {
private $name = "John";
};
$p1 = new person();
echo $p1->name;
?>
上述代码的输出将是:
PHP Fatal error: Uncaught Error: Cannot access private property person::$name
封装
封装是将属性和方法绑定到一个称为类的单个单元中的过程。它的目的是防止直接访问属性并且只能通过类的方法访问。数据封装导致了面向对象编程中数据隐藏的重要概念,也称为数据抽象。数据抽象是一种仅公开接口并向用户隐藏实现细节的机制。
数据封装步骤:
- 将每个属性声明为私有。
- 为每个属性创建公共set方法,用于设置属性的值。
- 为每个属性创建公共get方法,用于获取属性的值。
在下面的示例中,创建公共 set 和 get 方法来访问类 person 的私有属性 name 和 age。
<?php
class person {
private $Name;
private $Age;
//设置Name值的方法
public function setName($name) {
$this->Name = $name;
}
//获取Name值的方法
public function getName() {
return $this->Name;
}
//设置Age值的方法
public function setAge($age) {
$this->Age = $age;
}
//获取Age值的方法
public function getAge() {
return $this->Age;
}
};
$p1 = new person();
//设置姓名和年龄
$p1->setName("John");
$p1->setAge(25);
//获取姓名和年龄
echo $p1->getName()." is ".$p1->getAge()." years old.";
?>
上述代码的输出将是:
John is 25 years old.