Используя $this в статической функции перестал работать

У меня есть этот метод, в котором я хочу использовать $this, но все, что я получаю: Фатальная ошибка: Используя $this если не в контексте объекта.

Как я могу заставить это работать?

public static function userNameAvailibility()
{
     $result = $this->getsomthin();
}
65
задан Gerfried 11 October 2019 в 06:49
поделиться

3 ответа

Это правильный способ

public static function userNameAvailibility()
{
     $result = self::getsomthin();
}

Используйте self :: вместо $ this -> для статических методов .

См .: Учебник по статическим методам PHP для получения дополнительной информации:)

119
ответ дан 24 November 2019 в 15:22
поделиться

Вы не можете использовать $this внутри статической функции, потому что статические функции не зависят от любого инстанцированного объекта. Попробуйте сделать функцию не статической.

Edit: По определению, статические методы можно вызывать без инстанцированного объекта, поэтому нет смысла использовать $this внутри статического метода.

13
ответ дан 24 November 2019 в 15:22
поделиться

Аксессор this ссылается на текущий экземпляр класса. Поскольку статические методы не запускаются из экземпляра, использование this запрещено. Поэтому здесь нужно вызывать метод напрямую. Статический метод не может получить доступ ни к чему в области видимости экземпляра, но может получить доступ ко всему в области видимости класса вне области видимости экземпляра.

2
ответ дан 24 November 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: