PHP – 类和对象


类和对象的概念是 PHP 面向对象编程方法的核心。类是其对象的模板描述,包括处理这些属性的属性和函数。对象 是其类的实例,特征是类中定义的属性和函数。

类和对象

PHP 定义一个类

要定义一个类,PHP 有一个关键字 “class”。类似地,PHP 提供关键字 “new” 来声明任何给定类的对象。

PHP 定义新类的一般形式如下 -


<?php
   class phpClass {
      var $var1;
      var $var2 = "常量字符串";

      function myfunc ($arg1, $arg2) {
         [..]
      }
      [..]
   }
?>

关键字 class 后面跟要定义的类名。类名遵循与 PHP 变量相同的命名约定。它后面是一对大括号,其中包含任意数量的变量声明(属性)和函数定义。

变量声明以另一个保留关键字 var 开头,后跟约定 $variable 名称;它们也可能具有对 常量值 的初始赋值。

函数定义看起来与独立的 PHP 函数非常相似,但对于类来说是本地的,将用于设置和访问对象数据。类中的函数也称为方法。

例子

下面是一个定义 Book 类型的类的示例 -


class Book {

   /* 成员变量 */
   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 可用。$this 是指调用对象。

Book 类有两个成员变量(或属性): $title 、 $price。成员变量(有时也称为实例变量)通常每个对象具有不同的值;就像每本书的标题和价格都不同。

Book 类具有函数(类中定义的函数称为方法):setTitle() 、 setPrice()。这些函数是引用对象和参数调用的,用于分别设置 title price 成员变量的值。

Book 类还具有 getTitle() 和 getPrice() 方法。调用时,它们返回传递其引用的对象的 title price

定义类后,可以使用 new 运算符声明一个或多个对象。


$b1 = new Book;
$b2 = new Book;

new 运算符分配每个对象的成员变量和方法所需的内存。在这里,我们创建了两个对象,这些对象彼此独立,它们将分别存在。

每个对象都可以使用 “->” 运算符访问其成员变量和方法。例如,b1 对象的 $title 属性是 “$b 1->title”,要调用 setTitle() 方法,请使用 “$b 1->setTitle() ”语句。

要设置 b1 对象的标题和价格,


$b1->setTitle("PHP 编程");
$b1->setPrice(450);

同样,以下语句获取 b1 书籍的标题和价格 -


echo $b1->getPrice();
echo $b1->getTitle();

例子

下面给出了定义 Book 类、声明两个对象并调用成员函数的完整 PHP 脚本。


<?php
   class Book {
   
      /* 成员变量 */
      var $price;
      var $title;

      /* 成员函数 */
      function setPrice($par){
         $this->price = $par;
      }

      function getPrice(){
         echo $this->price ."\n";
      }

      function setTitle($par){
         $this->title = $par;
      }

      function getTitle(){
         echo $this->title ."\n";
      }
   }

   $b1 = new Book;
   $b2 =new Book;

   $b1->setTitle("PHP 编程");
   $b1->setPrice(450);
   $b2->setTitle("PHP 基本知识");
   $b2->setPrice(275);
   $b1->getTitle();
   $b1->getPrice();
   $b2->getTitle();
   $b2->getPrice();
?>

它将产生以下输出 -

PHP 编程
450
PHP 基本知识
275