[解決済み] PHP - エラー "using $this when not in object context" を解決するには?
2022-01-26 21:50:07
質問
このような特質クラスがあります。
trait Example
{
protected $var;
private static function printSomething()
{
print $var;
}
private static function doSomething()
{
// do something with $var
}
}
そしてこのクラス。
class NormalClass
{
use Example;
public function otherFunction()
{
$this->setVar($string);
}
public function setVar($string)
{
$this->var = $string;
}
}
でも、こんなエラーが出るんです。
Fatal error: Using $this when not in object context
.
どうすればこの問題を解決できますか?traitクラスでプロパティを使用することはできないのですか?それとも、これは本当に良い習慣ではないのでしょうか?
解決方法は?
クラスのメソッド/プロパティとオブジェクトのメソッド/プロパティの違いに起因する問題です。
-
あるプロパティをstaticとして定義した場合、クラス名/staticのようにクラスを通してアクセスする必要があります。
self
/parent
::$property
. -
静的でない場合は、次のような静的プロパティの中にあります。
$this->propertie
.
例えば、こんな感じです。
trait Example
{
protected static $var;
protected $var2;
private static function printSomething()
{
print self::$var;
}
private function doSomething()
{
print $this->var2;
}
}
class NormalClass
{
use Example;
public function otherFunction()
{
self::printSomething();
$this->doSomething();
}
public function setVar($string, $string2)
{
self::$var = $string;
$this->var2 = $string2;
}
}
$obj = new NormalClass();
$obj -> setVar('first', 'second');
$obj -> otherFunction();
静的関数 printSomething は、静的でないプロパティ $var にアクセスできない! 両方not staticで定義するか、両方staticで定義する必要があります。
関連
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】DateTimeクラスのオブジェクトを文字列に変換できない
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] PHPで「Header already sent」エラーを修正する方法
-
[解決済み】PHPUnitでprotectedメソッドをテストするためのベストプラクティス
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】DateTimeクラスのオブジェクトを文字列に変換できない
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] PHP 未定義関数への呼び出し
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない