PHP OOP - Méthodes statiques
PHP - Méthodes statiques
Les méthodes statiques peuvent être appelées directement - sans créer d'abord une instance de la classe.
Les méthodes statiques sont déclarées avec le static
mot clé :
Syntaxe
<?php
class ClassName {
public static function staticMethod() {
echo "Hello World!";
}
}
?>
Pour accéder à une méthode statique, utilisez le nom de la classe, les doubles-points (::) et le nom de la méthode :
Syntaxe
ClassName::staticMethod();
Regardons un exemple :
Exemple
<?php
class
greeting {
public static function
welcome() {
echo "Hello World!";
}
}
// Call static method
greeting::welcome();
?>
Exemple expliqué
Ici, nous déclarons une méthode statique : welcome(). Ensuite, nous appelons la méthode statique en utilisant le nom de la classe, les doubles-points (::) et le nom de la méthode (sans créer d'abord une instance de la classe).
PHP - En savoir plus sur les méthodes statiques
Une classe peut avoir à la fois des méthodes statiques et non statiques. Une méthode statique est accessible à partir d'une méthode de la même classe à l'aide du self
mot-clé et des deux-points (::) :
Exemple
<?php
class greeting {
public static function welcome() {
echo "Hello World!";
}
public function __construct()
{
self::welcome();
}
}
new
greeting();
?>
Les méthodes statiques peuvent également être appelées à partir de méthodes d'autres classes. Pour ce faire, la méthode statique doit être public
:
Exemple
<?php
class
greeting {
public static function
welcome() {
echo "Hello World!";
}
}
class
SomeOtherClass {
public function
message() {
greeting::welcome();
}
}
?>
Pour appeler une méthode statique à partir d'une classe enfant, utilisez le parent
mot clé à l'intérieur de la classe enfant. Ici, la méthode statique peut être public
ou protected
.
Exemple
<?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;
?>