PHP – 类与对象



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

Classes and Objects

在PHP中定义类

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

在PHP中定义新类的通用形式如下:

<?php
   class phpClass {
      var $var1;
      var $var2 = "constant string";

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

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

变量声明以另一个保留关键字var开头,后跟常规的$variable名称;它们也可以初始赋值为常数值。

函数定义看起来很像独立的PHP函数,但它们是局部于类的,将用于设置和访问对象数据。类中的函数也称为方法。

示例

以下是一个定义Book类型的类的示例:

class Book {

   /* Member variables */
   var $price;
   var $title;

   /* Member functions */
   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()。这些函数是通过引用对象和参数调用的,用于分别设置标题和价格成员变量的值。

Book类还具有getTitle()getPrice()方法。调用时,它们将返回传递引用的对象的标题和价格。

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

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

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

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

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

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

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

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

示例

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

<?php
   class Book {
   
      /* Member variables */
      var $price;
      var $title;

      /* Member functions */
      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 Programming");
   $b1->setPrice(450);
   $b2->setTitle("PHP Fundamentals");
   $b2->setPrice(275);
   $b1->getTitle();
   $b1->getPrice();
   $b2->getTitle();
   $b2->getPrice();
?>

它将产生以下输出

PHP Programming
450
PHP Fundamentals
275
广告