首頁 > 後端開發 > php教程 > PHP OOP 部分建構函數與析構函數

PHP OOP 部分建構函數與析構函數

Mary-Kate Olsen
發布: 2024-12-14 04:43:09
原創
678 人瀏覽過

PHP OOP Part-Constructor and Destructor

在本系列中,我將介紹 PHP 物件導向程式設計 (OOP) 的基礎知識。內容將被組織成連續的部分,每個部分都專注於一個特定的主題。如果您是初學者或不熟悉 OOP 概念,本系列旨在逐步指導您。 在這一部分中,我將討論 PHP 中的建構子和析構函式。讓我們一起開始學習PHP OOP的旅程吧!

什麼是構造函數?

我們首先嘗試了解什麼是建構子?簡單來說,建構函式是創建類別的物件時自動呼叫的特殊方法。構造函數用於初始化物件的屬性。這是PHP中的一個神奇方法。但現在我們需要詳細了解建構函式。我們先來看一個程式碼範例。

程式碼範例

class Car
{
   public $name;
   public $color;

   public function setValue(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car;
$toyota->setValue('Toyota', 'Red');
$toyota->getValue();
登入後複製
登入後複製

在上面的範例中,或是在上一節中,我們使用方法設定物件的值。這稱為Setter方法,意味著在創建類別的物件後,如果我們使用該物件的方法來設定值,則稱為Setter方法。然而,我們可以使用 PHP 內建的魔術方法來簡化這個過程。這個方法稱為建構函數,在 PHP 中,它是使用 __construct() 定義的。讓我們看下面的例子。

程式碼範例

class Car
{
   public $name;
   public $color;

   function __construct(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car('Toyota', 'Red');
$toyota->getValue();
登入後複製
登入後複製

在此範例中,我們沒有使用 setValue 方法,而是使用 __construct() 方法。那麼,使用 __construct() 有什麼好處呢?在前面的範例中,在建立 Car 類別的物件後,我們必須使用 setValue 方法傳遞每輛車的值。但現在,透過使用 __construct(),我們可以在物件建立時傳遞值,而不必呼叫額外的方法。

但是現在,問題出現了:我們沒有呼叫 __construct(),那麼它是如何接收到值並將其設定給變數的呢?

程式碼範例

new Car('Toyota', 'Red');
登入後複製

當我們在類別內部使用 __construct() 時,並且該建構子從外部接收值,我們可以在建立類別物件時傳遞第一個括號中的值。一旦我們以這種方式建立了對象,就會自動呼叫 __construct() 方法。換句話說,每當我們建立類別的實例時,它都會立即呼叫 __construct() 方法。這就是我們如何使用建構函式初始化物件的屬性。由於 __construct() 是魔術方法,因此我們不需要明確地呼叫它。它會在特定場景下自動執行,執行特定任務。

什麼是析構函數?

析構函數也是 PHP 中的一個神奇方法。當我們使用類別建立物件時,我們會使用該物件執行各種任務。但是當任務完成時,就意味著銷毀物件時會觸發析構函數。析構函數在 PHP 中使用 __destruct() 定義。

這裡要注意的是,如果我們使用一個類別來建立多個對象,那麼當所有物件都被銷毀時,每個物件都會呼叫 __destruct() 方法。換句話說,__destruct() 方法將被呼叫與使用該類別建立的物件數量一樣多的次數。讓我們看下面的例子。

程式碼範例

class Car
{
   public $name;
   public $color;

   public function setValue(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car;
$toyota->setValue('Toyota', 'Red');
$toyota->getValue();
登入後複製
登入後複製

如果我們運行此程式碼,我們將看到以下輸出。

class Car
{
   public $name;
   public $color;

   function __construct(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car('Toyota', 'Red');
$toyota->getValue();
登入後複製
登入後複製

現在,您可能想知道在哪些情況下我們應該使用 __destruct() 方法。當我們使用文件或資料庫時,我們需要打開它們,但是一旦我們的任務完成,我們就需要關閉文件或資料庫。在這種情況下,我們可以使用 __destruct() 方法。此外,__destruct() 方法還有許多現實生活中的用例。

我希望現在我們對 __construct() 和 __destruct() 有一些了解。除了這些方法之外,PHP 還有其他重要的魔術方法,例如 __call()、__callStatic() 等。我們也可以使用這些方法,因為它們在類別中的各種場景中執行某些任務。

所以,這就是今天的全部內容。我們將在下一課中詳細討論另一個主題。敬請關注!快樂編碼!

您可以在 Linkedin 和 GitHub 上與我聯絡。

以上是PHP OOP 部分建構函數與析構函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板