2018.
09.
21
22:49:46
結論から書くと
staticにしていないメソッド(関数)をstaticっぽい扱いで呼び出していた
のが原因でした。
それでは詳細を書いていきます。
とある処理を実行したら
とかいうエラーが出やがりましてね。
何でじゃ(--?となったのが今回のきっかけです。
ほんで、あれやこれやと調べたらstatic宣言していないメソッドに対して
staticっぽい呼び出しをしていたのが原因でした。
実際に例を挙げて説明しましょう。
順番が前後しますが、これがOKな処理ですφ(--)
これは普通に動きます。
画面上には「hoge」と表示されました。
次に、このコードの「static」を消しました。
を
にして
のようにしたわけです。
その結果、上記のエラーが表示されました。
いまさらですが、エラーメッセージの中に、めっちゃ
「Non-static method」や「should not be called statically」と書いてありますね。
ということで「static」が付いてないメソッドを
staticっぽく呼び出すのを止めればエラーは消えます。
そんな感じ\(--)/
staticにしていないメソッド(関数)をstaticっぽい扱いで呼び出していた
のが原因でした。
それでは詳細を書いていきます。
とある処理を実行したら
Non-static method ClassHoge::DispHoge() should not be called statically in C:\test\test01.php on line 12
とかいうエラーが出やがりましてね。
何でじゃ(--?となったのが今回のきっかけです。
ほんで、あれやこれやと調べたらstatic宣言していないメソッドに対して
staticっぽい呼び出しをしていたのが原因でした。
実際に例を挙げて説明しましょう。
順番が前後しますが、これがOKな処理ですφ(--)
<?php
class ClassHoge{
public static function DispHoge() {
print "hoge";
}
}
//------------
// main処理
//------------
ClassHoge::DispHoge();
class ClassHoge{
public static function DispHoge() {
print "hoge";
}
}
//------------
// main処理
//------------
ClassHoge::DispHoge();
これは普通に動きます。
画面上には「hoge」と表示されました。
次に、このコードの「static」を消しました。
public static function DispHoge() {
を
public function DispHoge() {
にして
<?php
class ClassHoge{
public function DispHoge() { //「staticを消した」
print "hoge";
}
}
//------------
// main処理
//------------
ClassHoge::DispHoge();
class ClassHoge{
public function DispHoge() { //「staticを消した」
print "hoge";
}
}
//------------
// main処理
//------------
ClassHoge::DispHoge();
のようにしたわけです。
その結果、上記のエラーが表示されました。
いまさらですが、エラーメッセージの中に、めっちゃ
「Non-static method」や「should not be called statically」と書いてありますね。
ということで「static」が付いてないメソッドを
staticっぽく呼び出すのを止めればエラーは消えます。
そんな感じ\(--)/