📜  PHP |封装

📅  最后修改于: 2022-05-13 01:56:36.972000             🧑  作者: Mango

PHP |封装

在当今的技术世界中,维护隐私已成为保护重要数据的苛刻需求之一。每当在一个函数中修改的数据影响其他功能时,它都会在任何软件中引起很多问题。为了克服这个问题, PHP中的面向对象编程使用了封装的概念。

所以PHP中封装的 OOPs 概念意味着,封装对象的内部细节以防止外部来源。它描述了在一个单元中将处理数据的类、数据变量和成员函数组合在一起以形成一个对象。否则,它将属性和行为捆绑在一个类单元中。

数据不是直接访问的,实际上是通过类内部编写的函数(GET 或 SET)访问的。属性保持私有,但 getter(GET) 和 setter(SET) 方法保持公开以用于操作这些属性。

封装的PHP程序:以下程序中的方法或函数是更新密码和检查课程名称。 GFG 类定义了与 GFG 用户相关的所有操作。

";
    }
  
    // Check account balance
    public function courseName($userId) {
          
        // Write function body
        echo("Function to check course name of user "
                . $userId);
          
        echo "
";     } }    $obj = new GFG(); $obj -> updatePwd('GFG12', 'geeks54321'); $obj -> courseName('GFG06');    ?>

输出:

Function to update password 'geeks54321' for user GFG12
Function to check course name of user GFG06

注意:外部最终用户无法访问数据成员和类属性。所以他们不能改变属性。

访问变量的程序

firstname;
    }
   
    public function setFirstName($firstname) {
        $this->firstname = $firstname;
        echo("First name is set to ".$firstname);
        echo("
");     }         public function getGender() {         return $this->gender;     }         public function setGender($gender) {         if ('Male' !== $gender and 'Female' !== $gender) {             echo('Set gender as Male or Female for gender');         }             $this->gender = $gender;         echo("Gender is set to ".$gender);         echo("
");     } }     $student = new Student(); $student->setFirstName('Meena'); $student->setGender('Female');     ?>

输出:

First name is set to Meena
Gender is set to Female

笔记:

  • 如果对象的属性是私有的并通过公共方法更新它们,则可以使用封装。
  • 可以使用访问说明符的实现来实现PHP中的封装。
  • 对 OOP 的继承概念非常小心,因为很多时候继承会破坏封装的概念。
  • 继承暴露了父类的一些细节,有效地打破了封装。

封装的优点:

  • 数据隐藏和抽象:对最终用户隐藏不必要的细节、内部表示和实现,以保护数据结构和类。通过创建私有方法来禁止其他类的成员访问数据。它通过保持成员变量私有并防止任何不一致的状态来保护任何对象的内部状态。它是将数据和相关操作封装到该对象中。

    注意:封装用于对客户端隐藏内部视图。

  • 数据安全性:封装有助于使数据非常健壮和安全,因为数据和成员函数被包装在一起形成一个对象。所有的任务都在里面完成,没有任何外在的担心,也让生活变得非常轻松。
  • 降低复杂性:封装通过隐藏实现的细节并暴露方法或操作来帮助降低软件的开发复杂性。
  • 可重用性:有实例,您不必重写从父类继承的相同功能。
  • 可靠性:您可以通过编写 SET 或 GET 方法将类设为只读或只写。
  • 更容易测试代码:封装的PHP代码易于测试,因为用于测试子类的函数也确保了对父类函数的测试。
  • 增加灵活性:可以通过 GET 或 SET 方法访问类变量,增加灵活性。它易于维护,因为可以在不更改代码的情况下更改内部实现。

结论: PHP中的面向对象编程是通过使用封装的概念来实现的,封装用于信息隐藏。它降低了当前类的属性的易访问性。 Getter 和 Setter 方法用于避免外部不需要的访问。它还有助于验证分配给属性的新值。
简而言之, PHP中的封装是隐藏对象的所有秘密细节的过程,这些细节实际上对类的关键特性没有多大贡献。