PHP - 類/物件 get_called_class() 函式



PHP 類/物件 get_called_class() 函式用於查詢呼叫靜態方法的類的名稱。在使用繼承時,它非常有用,因為它識別發出呼叫的類,而不是定義函式的類。

語法

以下是 PHP 類/物件 get_called_class() 函式的語法:

string get_called_class()

引數

此函式不接受任何引數。

返回值

get_called_class() 函式返回呼叫靜態方法的類的名稱。

PHP 版本

get_called_class() 函式首次出現在 PHP 5.3.0 中,並且在 PHP 7 和 PHP 8 中繼續輕鬆執行。

示例 1

在此示例中,我們定義一個簡單的類,並在靜態方法中使用 PHP 類/物件 get_called_class() 函式來顯示其名稱。

<?php
   // Define a class here
   class MyClass {
      public static function myFunc() {
          return get_called_class();
      }
   }
  
   echo MyClass::myFunc();
?>

輸出

以下是以下程式碼的結果:

MyClass

示例 2

在下面的 PHP 程式碼中,我們將嘗試使用 get_called_class() 函式,並檢視當子類繼承自父類時此函式是如何工作的。

<?php
   // Define a class here
   class ParentClass {
      public static function myFunc() {
          return get_called_class();
      }
   }
  
   class ChildClass extends ParentClass {}
  
   echo ChildClass::myFunc();
?> 

輸出

這將生成以下輸出:

ChildClass

示例 3

在此示例中,我們在特性內使用 get_called_class() 來查詢呼叫類。特性的方法 myFunc() 使用 get_called_class() 精確找到呼叫類 MyClass。

<?php
   trait MyTrait {
      public static function myFunc() {
          return get_called_class();
      }
  }
  
  class MyClass {
      use MyTrait;
  }
  
  echo MyClass::myFunc();
?> 

輸出

這將建立以下輸出:

MyClass

示例 4

此 PHP 程式碼顯示了當不同的類繼承自同一個抽象類時,get_called_class() 函式是如何反應的。

<?php
   // Define the abstract class here
   abstract class AbstractClass {
      public static function myFunc() {
          return get_called_class();
      }
   }
  
   class FirstClass extends AbstractClass {}
   class SecondClass extends AbstractClass {}
  
   echo FirstClass::myFunc();   
   echo SecondClass::myFunc(); 
?> 

輸出

以下是上述程式碼的輸出:

FirstClass
SecondClass
php_function_reference.htm
廣告