PHP 中靜態方法和例項方法的比較


什麼是靜態方法?

在 PHP 中,靜態方法屬於類本身,而不是類的例項(物件)。它可以直接使用類名訪問,而無需建立類的例項。

示例

<?php
class MathUtility {
   public static function square($number) {
      return $number * $number;
   }

   public static function cube($number) {
      return $number * $number * $number;
   }
}

// Calling the static methods without creating an instance
$squared = MathUtility::square(5);
$cubed = MathUtility::cube(3);

echo $squared . "<br>"; // Output: 25
echo $cubed; // Output: 27

?>

輸出

25
27

在上面的示例中,我們有一個 MathUtility 類,其中有兩個靜態方法:square() 和 cube()。這些方法執行簡單的數學運算並返回結果。由於這些方法是靜態的,因此我們可以直接使用類名後跟 :: 運算子訪問它們,而無需建立 MathUtility 類的例項。

什麼是例項方法?

在 PHP 中,例項方法屬於類的例項(物件)。它只能透過類的例項訪問,而不是直接使用類名。

示例

<?php
class Circle {
   private $radius;

   public function __construct($radius) {
      $this->radius = $radius;
   }

   public function calculateArea() {
      return pi() * $this->radius * $this->radius;
   }

   public function calculateCircumference() {
      return 2 * pi() * $this->radius;
   }
}

// Creating an instance of the Circle class
$circle = new Circle(5);

// Accessing instance methods through the object
echo $circle->calculateArea()."<br>"; // Output: 78.539816339745
echo $circle->calculateCircumference(); // Output: 31.41592653589793
?>

輸出

78.539816339745
31.415926535898

在上面的示例中,我們有一個 Circle 類,其中包含三個方法:一個建構函式 (__construct()) 和兩個例項方法 (calculateArea() 和 calculateCircumference())。例項方法根據圓的半徑(它是特定於例項的屬性 ($radius))執行計算。

要使用例項方法,我們首先透過呼叫建構函式並傳遞半徑值來建立 Circle 類的例項。然後,我們可以使用物件名(在本例中為 $circle)後跟 -> 運算子訪問例項方法。

PHP 中靜態方法和例項方法的比較

示例

<?php
class MathOperations {
   public static function multiply($a, $b) {
      return $a * $b;
   }

   public function add($a, $b) {
      return $a + $b;
   }
}

// Static method example
echo MathOperations::multiply(5, 2) ."<br>";

// Instance method example
$obj = new MathOperations();
echo $obj->add(3, 4); 
?>

輸出

10
7

程式碼解釋

在上面的程式碼中,我們有一個 MathOperations 類,其中包含一個靜態方法 multiply() 和一個例項方法 add()。讓我們比較一下它們

靜態方法

  • 我們使用類名 (MathOperations::multiply(5, 2)) 直接呼叫靜態方法 multiply()。

  • 靜態方法 multiply() 執行乘法運算並返回結果。

  • 在示例中,我們呼叫 multiply(5, 2),它給我們 10 的乘積。

  • 靜態方法可以在不建立類例項的情況下訪問和使用。

例項方法

  • 我們使用 $obj = new MathOperations() 建立 MathOperations 類的例項。

  • 我們使用物件名 ($obj->add(3, 4)) 呼叫例項方法 add()。

  • 例項方法 add() 執行加法運算並返回結果。

  • 在示例中,我們呼叫 add(3, 4),它給我們 7 的和。

  • 例項方法是在類的例項(物件)上使用物件名和 -> 運算子呼叫的。

結論

總之,PHP 中的靜態方法可以透過類名直接訪問和使用,而無需類的例項。它們對於不依賴於特定例項資料的實用程式函式或操作很有用。靜態方法可以從程式碼中的任何位置訪問,並且不與任何特定物件繫結。另一方面,例項方法透過類的例項(物件)訪問和操作。它們可以訪問和修改特定於例項的資料和行為,從而允許自定義和多型性。例項方法定義特定於類的單個例項的操作和行為。

更新於: 2023-07-28

335 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.