87

$this を使用したいこのメソッドがありますが、得られるのは次のとおりです: 致命的なエラー: オブジェクト コンテキストでないときに $this を使用しています。

どうすればこれを機能させることができますか?

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

7 に答える 7

153

これが正しい方法です

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

静的メソッドself::の代わりに$this->使用します。

参照: 詳細については、PHP 静的メソッドのチュートリアル:)

于 2010-02-18T06:24:21.767 に答える
15

$this静的関数はインスタンス化されたオブジェクトから独立しているため、静的関数内では使用できません。関数を非静的にしてみてください。

編集:定義により、静的メソッドはインスタンス化されたオブジェクトなしで呼び出すことができるため$this、静的メソッド内での意味のある使用はありません。

于 2010-02-18T06:22:22.567 に答える
6

self:: を使用して静的関数内で呼び出すことができるのは静的関数のみです。クラスに使用したい非静的関数が含まれている場合は、同じクラスのインスタンスを宣言して使用できます。

<?php
class some_class{
function nonStatic() {
    //.....  Some code ....   
    }
 Static function isStatic(){
    $someClassObject = new some_class;
    $someClassObject->nonStatic();
    } 
}
?>
于 2013-10-01T20:59:07.953 に答える
3

アクセサーthisは、クラスの現在のインスタンスを参照します。静的メソッドはインスタンスから実行されないため、使用thisは禁止されています。したがって、ここでメソッドを直接呼び出す必要があります。静的メソッドは、インスタンスのスコープ内の何にもアクセスできませんが、インスタンス スコープ外のクラス スコープ内のすべてにアクセスできます。

于 2010-02-18T06:23:29.537 に答える