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