访问说明符

在了解封装的概念之前,了解访问说明符的概念非常重要.访问说明符定义了类的成员(属性和方法)的访问类型,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.