LoginSignup
1
0

More than 3 years have passed since last update.

エラー「Uncaught Error: Access to undeclared static property: 〜」の対処方法

Posted at

発生状況

phpでクラスから別クラスの変数を取得しようとした際にエラー発生しました。

簡単な処理を以下に記載します。
別クラスから取得した変数を出力する処理で、yamada と出力されれば成功です!

処理内容
$person = new GetInfo;
$person->getName();

class PostInfo{
    public $name = 'yamada' . PHP_EOL;
}

class GetInfo{
    public function getName(){
        echo PostInfo::$name;
    }
}
結果
Fatal error: Uncaught Error: Access to undeclared static property: PostInfo::$name

このように PostInfoクラスの $name 変数が取り出せずにエラーになってしまいます。

解決方法

$name 変数前に static を記載することで解決しました。

example.php
$person = new GetInfo;
$person->getName();

class PostInfo{
    static public $name = 'yamada' . PHP_EOL;
}

class GetInfo{
    public function getName(){
        echo PostInfo::$name;
    }
}
結果
yamada

このように成功しました!

staticプロパティについて

こちらのエラーをわかりやすく解説しているサイトがありましたので、学んだことを簡単に引用させていただきました。

staticキーワードを付けたプロパティには、外部から直接アクセス出来ます。
staticキーワードを付けて宣言したプロパティは、クラスをインスタンス化せずに使用できます。
staticを指定していないプロパティにstatic形式でアクセスすると、「PHP Fatal error: Access to undeclared static property」エラーが発生します。

staticプロパティの参考サイト
http://akutaka00.blog102.fc2.com/blog-entry-69.html

まとめ

つまり今回「staticを指定していないプロパティにstatic形式でアクセス」していたことが原因だったことがわかりました。
プログラミングの学習をしていると様々なエラーが発生し心折れそうになりますがきちんと原因がわかると、知識が増えた・理解が深まったとポジティブな方向に持っていけることが良いことだなと思いました。

これからも理解したことを少しずつアウトプットしていければと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0