Phpのclassの変数を取得代入する際のエラーについて

提供:sufeeWiki
2022年3月24日 (木) 00:09時点におけるSufee Admin (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

Fatal error: Uncaught Error: Typed property $this->val must not be accessed before initialization
つまり変数が型のなにかに初期化されておらずundefinedの状態で呼び出すなということ(?)

原因となるClass

class Cat
{
 private string $val;
 function set($q)
 {
   $this->val = $q;
 }
 function get()
 {
  return $this->val;
 }
}

$love = new Cat();
$love->set("シャム猫");
echo $love.get();

// Fatal error: Uncaught Error: Typed property Cat::$val must not be accessed before initialization line 6

対処法

class Cat
{
 private string $val = "猫";
 function set($q)
 {
   $this->val = $q;
 }
 function get()
 {
  return $this->val;
 }
}

$love = new Cat();
$love->set("シャム猫");
echo $love.get();

// シャム猫