PHP OOP - 静态方法

PHP - 静态方法

静态方法可以直接调用,而无需先创建类的实例。

静态方法使用 static 关键字声明:

语法

<?php
class ClassName {
  public static function staticMethod() {
    echo "Hello World!";
  }
}
?>

如需访问静态方法,请使用类名、双冒号 (::) 和方法名:

语法

ClassName::staticMethod();

让我们看一个例子:

实例

<?php
class greeting {
  public static function welcome() {
    echo "Hello World!";
  }
}

// 调用静态方法
greeting::welcome();
?>

亲自试一试

例子解释

在这里,我们声明了一个静态方法:welcome()。然后,我们使用类名、双冒号 (::) 和方法名(无需先创建类的实例)来调用这个静态方法。

PHP - 关于静态方法的更多信息

一个类可以既有静态方法也有非静态方法。静态方法可以在同一类的其他方法中使用 self 关键字和双冒号 (::) 来访问:

实例

<?php
class greeting {
  public static function welcome() {
    echo "Hello World!";
  }

  public function __construct() {
    self::welcome();
  }
}

new greeting();
?>

亲自试一试

静态方法也可以从其他类的方法中调用。要做到这一点,静态方法应该是 public 的:

实例

<?php
class A {
  public static function welcome() {
    echo "Hello World!";
  }
}

class B {
  public function message() {
    A::welcome();
  }
}

$obj = new B();
echo $obj -> message();
?>

亲自试一试

要从子类调用静态方法,请在子类内部使用 parent 关键字。在这里,静态方法可以是 publicprotected 的。

实例

<?php
class domain {
  protected static function getWebsiteName() {
    return "w3school.com.cn";
  }
}

class domainW3 extends domain {
  public $websiteName;
  public function __construct() {
    $this->websiteName = parent::getWebsiteName();
  }
}

$domainW3 = new domainW3;
echo $domainW3 -> websiteName;
?>

亲自试一试