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
廣告