下記の①と②のコードについて、動作が異なる理由が知りたいです。
①アクセス修飾子を記述していない動作しないコード
PHP
1<?php 2 class hoge{ 3 private $fuga; 4 5 function greeting(){ 6 echo 'Hello!'; 7 } 8 } 9 hoge::greeting(); //PHP Fatal error: Uncaught Error: Non-static method hoge::greeting() cannot be called statically in・・ 10?> 11
②アクセス修飾子を記述した動作するコード
PHP
1<?php 2 class hoge{ 3 private $fuga; 4 5 public static function greeting(){ 6 echo 'Hello!'; 7 } 8 } 9 hoge::greeting(); //Hello!が表示される 10?> 11
PHPの場合、「クラス内で宣言したfunctionにアクセス修飾子がない場合は、publicを指定したものと同じになる」
という仕様だったため、①のhoge::greeting();も動くものと思いました。
①のコードでエラーが発生するのは、どういった理由からなのでしょうか?
理解があやふやなため、いまいち腑に落ちずにおります…
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。