PHP OOP - Statische Methoden
PHP - Statische Methoden
Statische Methoden können direkt aufgerufen werden – ohne vorher eine Instanz der Klasse zu erzeugen.
Statische Methoden werden mit dem static
Schlüsselwort deklariert:
Syntax
<?php
class ClassName {
public static function staticMethod() {
echo "Hello World!";
}
}
?>
Um auf eine statische Methode zuzugreifen, verwenden Sie den Klassennamen, einen doppelten Doppelpunkt (::) und den Methodennamen:
Syntax
ClassName::staticMethod();
Schauen wir uns ein Beispiel an:
Beispiel
<?php
class
greeting {
public static function
welcome() {
echo "Hello World!";
}
}
// Call static method
greeting::welcome();
?>
Beispiel erklärt
Hier deklarieren wir eine statische Methode: welcome(). Dann rufen wir die statische Methode auf, indem wir den Klassennamen, den doppelten Doppelpunkt (::) und den Methodennamen verwenden (ohne zuerst eine Instanz der Klasse zu erstellen).
PHP - Mehr zu statischen Methoden
Eine Klasse kann sowohl statische als auch nicht statische Methoden haben. Auf eine statische Methode kann von einer Methode derselben Klasse aus mit dem self
Schlüsselwort und dem doppelten Doppelpunkt (::) zugegriffen werden:
Beispiel
<?php
class greeting {
public static function welcome() {
echo "Hello World!";
}
public function __construct()
{
self::welcome();
}
}
new
greeting();
?>
Statische Methoden können auch von Methoden in anderen Klassen aufgerufen werden. Dazu sollte die statische Methode sein public
:
Beispiel
<?php
class
greeting {
public static function
welcome() {
echo "Hello World!";
}
}
class
SomeOtherClass {
public function
message() {
greeting::welcome();
}
}
?>
Um eine statische Methode von einer untergeordneten Klasse aufzurufen, verwenden Sie das parent
Schlüsselwort innerhalb der untergeordneten Klasse. Hier kann die statische Methode public
oder sein protected
.
Beispiel
<?php
class domain {
protected static function
getWebsiteName() {
return "W3Schools.com";
}
}
class domainW3 extends domain {
public $websiteName;
public function __construct() {
$this->websiteName =
parent::getWebsiteName();
}
}
$domainW3 = new domainW3;
echo $domainW3 -> websiteName;
?>