Статические функции и переменные используются для доступа к переменным / функциям в глобальной области видимости, например:
echo myClass::myVariable;
echo myClass::myFunction();
Когда что-то статично, к нему можно получить доступ где угодно, и оно очень похоже на функцию процедурного типа, за исключением того, что оно может использовать self и содержится в области видимости классов.
class myClass{
static $myVariable = "myVar";
static function myFunction()
{
return "myFunc";
}
}
Один из способов использовать это - сохранить только один экземпляр класса или метод Singleton.
class myClass
{
static $class = false;
static function get_connection()
{
if(self::$class == false)
{
self::$class = new myClass;
}
else
{
return self::$class;
}
}
private function __construct()
{
// my constructor
}
// Then create regular class functions.
}
Поскольку у него есть закрытый конструктор, его нельзя создать с помощью оператора new
, поэтому вы вынуждены вызывать myClass::get_connection()
, чтобы получить класс. Эта функция может создать новый класс (потому что он является членом класса). Затем он сохраняет класс в статической переменной, и если вы снова вызовете функцию, он просто вернет созданный класс.
В конце концов, ключевое слово static используется, чтобы держать вещи, ну, в общем, статичные, в отношении объема. Это означает, что вам не нужно ничего «менять» из-за текущей области видимости. Хотя метод Singleton немного растягивает это, он придерживается той же идеи, что у вас всегда есть «один и тот же» класс, независимо от того, в какой области вы находитесь.
PHP Документация
Статическое ключевое слово
Оператор разрешения области действия
StackOverflow Knowledge
Как избежать использования глобальных объектов PHP
Обмен переменными между функциями в PHP без использования глобальных переменных
Создание глобальной переменной, доступной для каждой функции внутри класса
Global или Singleton для подключения к базе данных
Классы PHP: когда использовать :: vs. ->?