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

提供:sufeeWiki
ナビゲーションに移動 検索に移動

概要

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();

// シャム猫