PHP 类与对象

  • PHP 面向对象的编程

    我们可以想象我们的宇宙由不同的物体组成,如太阳,地球,月亮等。同样,我们可以想象我们的汽车由不同的物体组成,如轮子,方向盘,齿轮等。同样,面向对象的编程概念将一切都视为一个对象和使用不同的对象实现软件。

    面向对象的概念

    • 类(class) - 这是程序员定义的数据类型,包括本地函数和本地数据。您可以将类视为用于创建对象的同类(或类)的许多实例的模板。
    • 对象(object) - 由类定义的数据结构的单个实例。您可以定义一次类,然后创建属于它的许多对象。对象也称为实例。
    • 成员变量 - 这些是在类中定义的变量。该数据对于类的外部是不可见的,并且可以通过成员函数访问。一旦创建了对象,这些变量就被称为对象的属性。
    • 成员函数 - 这些是在类中定义的函数,用于访问对象数据。
    • 继承 - 当通过继承父类的现有函数来定义类时,它被称为继承。这里,子类将继承父类的所有或一些成员函数和变量。
    • 父类 - 从另一个类继承的类。这也称为基类或超类。
    • 子类 - 从另一个类继承的类。这也称为子类或派生类。
    • 多态性 - 这是一个面向对象的概念,其中相同的功能可用于不同的目的。例如,函数名称将保持不变,但它需要不同数量的参数,并且可以执行不同的任务。
    • 重载 - 一种多态,其中一些或所有运算符根据其参数的类型具有不同的实现。类似地,函数也可以通过不同的实现来重载。
    • 数据抽象 - 隐藏实现细节(抽象)的任何数据表示。
    • 封装 - 指的是我们将所有数据和成员函数封装在一起以形成对象的概念。
    • 构造函数 - 指一种特殊类型的函数,只要从类中形成对象,就会自动调用该函数。
    • 析构函数 - 指一种特殊类型的函数,只要删除对象或超出对象作用域,就会自动调用该函数。
  • 定义PHP类

    在PHP中定义新类的一般形式如下
    <?php
       class phpClass {
          var $var1;
          var $var2 = "constant string";
          
          function myfunc ($arg1, $arg2) {
             [..]
          }
          [..]
       }
    ?>
    
    以下是上面代码的描述
    • 关键字class,后跟要定义的类的名称,类开始的花括号。
    • 包含任意数量的变量声明和函数定义。
    • 变量声明以特殊形式var开头,后跟传统的变量名称; 它们也可能具有恒定值的初始赋值。
    • 函数定义看起来很像独立的PHP函数,但它们是类的本地函数,并将用于设置和访问对象数据。
    这是一个定义一类Books类型的例子
    <?php
       class Books {
          /* 成员变量 */
          var $price;
          var $title;
          
          /* 成员函数 */
          function setPrice($par){
             $this->price = $par;
          }
          
          function getPrice(){
             echo $this->price ."<br/>";
          }
          
          function setTitle($par){
             $this->title = $par;
          }
          
          function getTitle(){
             echo $this->title ." <br/>";
          }
       }
    ?>
    
    变量$this是一个特殊变量,它引用对象本身。
  • 用PHP创建对象

    一旦定义了类,就可以根据需要为该类类创建任意数量的对象。以下是如何使用new运算符创建对象的示例。
    $physics = new Books;
    $maths = new Books;
    $chemistry = new Books;
    
    在这里,我们创建了三个对象,这些对象彼此独立,它们将分别存在。接下来,我们将看到如何访问成员函数和设置成员变量。
  • 调用成员函数

    创建对象后,您将能够调用与该对象相关的成员函数。一个成员函数只能处理相关对象的成员变量。以下示例显示如何通过调用成员函数来设置三本书的标题和价格。
    $physics->setTitle( "高中物理" );
    $chemistry->setTitle( "高中化学" );
    $maths->setTitle( "高等数学" );
    
    $physics->setPrice( 10 );
    $chemistry->setPrice( 15 );
    $maths->setPrice( 7 );
    
    现在,您调用另一个成员函数来获取上面示例中设置的值
    $physics->getTitle();
    $chemistry->getTitle();
    $maths->getTitle();
    $physics->getPrice();
    $chemistry->getPrice();
    $maths->getPrice();
    
    尝试一下