PHP OOP - Statische methoden
PHP - Statische methoden
Statische methoden kunnen direct worden aangeroepen - zonder eerst een instantie van de klasse te maken.
Statische methoden worden gedeclareerd met het static
sleutelwoord:
Syntaxis
<?php
class ClassName {
public static function staticMethod() {
echo "Hello World!";
}
}
?>
Om toegang te krijgen tot een statische methode, gebruikt u de klassenaam, dubbele dubbele punt (::), en de methodenaam:
Syntaxis
ClassName::staticMethod();
Laten we een voorbeeld bekijken:
Voorbeeld
<?php
class
greeting {
public static function
welcome() {
echo "Hello World!";
}
}
// Call static method
greeting::welcome();
?>
Voorbeeld uitgelegd
Hier declareren we een statische methode: welkom(). Vervolgens roepen we de statische methode aan door de klassenaam, dubbele dubbele punt (::) en de methodenaam te gebruiken (zonder eerst een instantie van de klasse te maken).
PHP - Meer over statische methoden
Een klasse kan zowel statische als niet-statische methoden hebben. Een statische methode is toegankelijk vanuit een methode in dezelfde klasse met behulp van het self
sleutelwoord en dubbele dubbele punt (::):
Voorbeeld
<?php
class greeting {
public static function welcome() {
echo "Hello World!";
}
public function __construct()
{
self::welcome();
}
}
new
greeting();
?>
Statische methoden kunnen ook worden aangeroepen vanuit methoden in andere klassen. Om dit te doen, moet de statische methode zijn public
:
Voorbeeld
<?php
class
greeting {
public static function
welcome() {
echo "Hello World!";
}
}
class
SomeOtherClass {
public function
message() {
greeting::welcome();
}
}
?>
Om een statische methode aan te roepen vanuit een onderliggende klasse, gebruikt u het parent
sleutelwoord binnen de onderliggende klasse. Hier kan de statische methode public
of zijn protected
.
Voorbeeld
<?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;
?>