static
имеет два варианта использования в PHP:
Во-первых, и чаще всего его можно использовать для определения переменных / функций класса (в отличие от переменных / функций экземпляра), к которым можно обращаться без создания экземпляра класса:
class A {
public static $var = 'val'; // $var is static (in class context)
public $other_var = 'other_val'; // non-static
}
echo A::$var; // val
echo A::$other_var // doesn't work (fatal error, undefined static variable)
$a = new A;
echo $a->var // won't work (strict standards)
echo $a->other_var // other_val
Во-вторых, его можно использовать для поддержания состояния между вызовами функций:
function a() {
static $i = 0;
$j = 0;
return array($i++, $j++);
}
print_r(a()); // array(0, 0)
print_r(a()); // array(1, 0)
print_r(a()); // array(2, 0)
//...
Обратите внимание, что объявление статической переменной внутри функции работает одинаково независимо от того, определена ли функция в классе, все, что имеет значение, - это то, где объявлена переменная (член класса или функция ).