Использование этого внутри статической функции не выполняется

У меня есть этот метод, который я хочу использовать $ this in, но все, что я получаю: Fatal error: использование $ this, если не в контексте объекта.

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

public static function userNameAvailibility() { $result = $this->getsomthin(); } 

Solutions Collecting From Web of "Использование этого внутри статической функции не выполняется"

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

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

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

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

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

Редактирование . По определению статические методы могут быть вызваны без какого-либо созданного объекта, и, следовательно, не существует значимого использования $this внутри статического метода.

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

В статической функции можно вызвать только статические функции, используя self :: если ваш класс содержит нестационарную функцию, которую вы хотите использовать, вы можете объявить экземпляр того же класса и использовать его.

 <?php class some_class{ function nonStatic() { //..... Some code .... } Static function isStatic(){ $someClassObject = new some_class; $someClassObject->nonStatic(); } } ?> 

Вот пример того, что происходит, когда метод класса вызывается неправильным образом. Вы увидите некоторые предупреждения при выполнении этого кода, но он будет работать и будет печатать: «Я A: печать свойства B». (Выполнено в php5.6)

 class A { public function aMethod() { echo "I'm A: "; echo "printing " . $this->property; } } class B { public $property = "B property"; public function bMethod() { A::aMethod(); } } $b = new B(); $b->bMethod(); 

Это означает, что переменная $ this, используемая в методе, который вызывается как статический метод, указывает на экземпляр класса «вызывающий». В приведенном выше примере существует свойство $ this->, используемое в классе A, которое указывает на свойство B.

Жаль, PHP не показывает достаточно описательную ошибку. Вы не можете использовать $ this-> внутри статической функции, а скорее используете self :: если вам нужно вызвать функцию внутри одного класса