$this を使用したいこのメソッドがありますが、得られるのは次のとおりです: 致命的なエラー: オブジェクト コンテキストでないときに $this を使用しています。
どうすればこれを機能させることができますか?
public static function userNameAvailibility()
{
$result = $this->getsomthin();
}
$this を使用したいこのメソッドがありますが、得られるのは次のとおりです: 致命的なエラー: オブジェクト コンテキストでないときに $this を使用しています。
どうすればこれを機能させることができますか?
public static function userNameAvailibility()
{
$result = $this->getsomthin();
}
これが正しい方法です
public static function userNameAvailibility()
{
$result = self::getsomthin();
}
静的メソッドself::
の代わりに$this->
使用します。
参照: 詳細については、PHP 静的メソッドのチュートリアル:)
$this
静的関数はインスタンス化されたオブジェクトから独立しているため、静的関数内では使用できません。関数を非静的にしてみてください。
編集:定義により、静的メソッドはインスタンス化されたオブジェクトなしで呼び出すことができるため$this
、静的メソッド内での意味のある使用はありません。
self:: を使用して静的関数内で呼び出すことができるのは静的関数のみです。クラスに使用したい非静的関数が含まれている場合は、同じクラスのインスタンスを宣言して使用できます。
<?php
class some_class{
function nonStatic() {
//..... Some code ....
}
Static function isStatic(){
$someClassObject = new some_class;
$someClassObject->nonStatic();
}
}
?>
アクセサーthis
は、クラスの現在のインスタンスを参照します。静的メソッドはインスタンスから実行されないため、使用this
は禁止されています。したがって、ここでメソッドを直接呼び出す必要があります。静的メソッドは、インスタンスのスコープ内の何にもアクセスできませんが、インスタンス スコープ外のクラス スコープ内のすべてにアクセスできます。