PHP - Metode statice
Cuvântul cheie static este modul prin care creezi metode și proprietăți statice.
Ce face specială o metodă statică este faptul că o poți apela direct, fără să fie nevoie să creezi o instanță a clasei ei.
Declararea unei metode statice
Adăugarea unei metode statice într-o clasă necesită un singur cuvânt cheie în plus, static:
Sintaxa declarării unei metode statice
Cuvântul cheie static se scrie înaintea numelui funcției în declarație:
<?php
class ClassName {
public static function staticMethod() {
echo "Hello World!";
}
}
?>
Accesarea unei metode statice
Apelul unei metode statice are trei părți: mai întâi numele clasei, apoi două puncte duble (::) și, la final, numele metodei.
Exemplul următor declară o metodă statică numită welcome() și o apelează exact în această formă. Observă că nu se creează niciun obiect:
Exemplu
Apelează o metodă statică prin numele clasei ei:
Ieșire: script PHP
<?php
class greeting {
// metodă statică
public static function welcome() {
echo "Hello World!";
}
}
// Apelăm metoda statică direct
greeting::welcome();
?>
Exemplu
Aici, o metodă statică sum() este declarată și apoi apelată în aceeași formă: numele clasei, ::, numele metodei:
Ieșire: script PHP
<?php
class calc {
// metodă statică
public static function sum($x, $y) {
return $x * $y;
}
}
// Apelăm metoda statică
$res = calc::sum(6, 4);
echo $res;
?>
Sintaxa accesării unei metode statice
Forma generală a apelului unei metode statice:
<?php
ClassName::staticMethod();
?>
PHP - Mai multe despre metodele statice
Metodele statice și cele nestatice pot sta una lângă alta într-o clasă. Ca să ajungi la o metodă statică dintr-o altă metodă a aceleiași clase, scrie self și două puncte duble (::) înaintea numelui ei:
Exemplu
Aici, constructorul apelează o metodă statică a propriei clase prin self:
Ieșire: script PHP
<?php
class greeting {
// metodă statică
public static function welcome() {
echo "Hello World!";
}
// metodă non-statică
public function __construct() {
self::welcome();
}
}
new greeting();
?>
Exemplu
O metodă dintr-o altă clasă poate apela și ea o metodă statică, atât timp cât metoda statică este public:
Ieșire: script PHP
<?php
class A {
public static function welcome() {
echo "Hello World!";
}
}
class B {
public function message() {
A::welcome();
}
}
$obj = new B();
echo $obj -> message();
?>
Exemplu
Într-o clasă copil, apelează metoda statică a părintelui cu ajutorul cuvântului cheie parent. În acest caz, metoda statică poate fi fie public, fie protected.
Ieșire: script PHP
<?php
class domain {
protected static function getWebsiteName() {
return "PromptCookbook";
}
}
class domainW3 extends domain {
public $websiteName;
public function __construct() {
$this->websiteName = parent::getWebsiteName();
}
}
$domainW3 = new domainW3;
echo $domainW3 -> websiteName;
?>