PHP OOP - Méthodes statiques


PHP - Méthodes statiques

Les méthodes statiques peuvent être appelées directement, sans avoir besoin de créer d'abord une instance de la classe.

Les méthodes statiques sont déclarées avec le mot-clé static :

Syntaxe

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

Pour accéder à une méthode statique, utilisez le nom de la classe, deux 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!";
}
}

// Appeler la méthode statique
greeting::welcome();
?>
Essayez-le vous-même »

Exemple expliqué

Ici, nous déclarons une méthode statique : welcome(). Ensuite, nous appelons cette méthode statique en utilisant le nom de la classe, deux points (::), et le nom de la méthode (sans créer d'abord une instance de la classe).



PHP - Plus sur les méthodes statiques

Une classe peut avoir à la fois des méthodes statiques et non statiques. Une méthode statique peut être accédée depuis une méthode de la même classe en utilisant le self et deux points (::) :

Exemple

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

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

new greeting();
?>
Essayez-le vous-même »

Les méthodes statiques peuvent également être appelées depuis des méthodes dans d'autres classes. Pour ce faire, la méthode statique doit être publique :

Exemple

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

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

$obj = new B();
echo $obj -> message();
?>
Essayez-le vous-même »

Pour appeler une méthode statique depuis une classe enfant, utilisez le parent à l'intérieur de la classe enfant. Ici, la méthode statique peut être publique ou protégée .

Exemple

<?php
class domain {
protected static function getWebsiteName() {
return "formation-ti.org";
}
}

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

$domainW3 = new domainW3;
echo $domainW3 -> websiteName;
?>
Essayez-le vous-même »