2013-10-30 24 views
19

最近私はPHP 5.4の更新を行っており、静的コードと非静的コードに関するエラーが発生しました。非静的メソッド.....静的に呼び出されるべきではありません

これはエラーです:

$timer = VTimer::get($options['magic']); 

私は誰かが役立つことを願って:

PHP Strict Standards: Non-static method VTimer::get() 
should not be called statically in /home/jaco/public_html/include/function_smarty.php on line 371 

これはライン371です。

$timer = (new VTimer)->get($options['magic']);

staticnon-staticの違いは、あなたがそれに::を追加し、その後classnameを呼び出し、通話することができますので、最初のものは、初期化を必要としないということである:それはのように呼ばれるべきであることを意味する

+3

スタックオーバーフローへようこそ。ユーザー名を選択する必要があります。 「初心者の趣味のPHPボーイ」をお勧めします。 – webbiedave

+3

ありがとう、それは私の良い名前です、Sergiu;) –

答えて

41

メソッドをすぐに。

ClassName::method(); 

及び方法は、あなたがそうのようにそれを初期化する必要が静的でない場合:

$var = new ClassNmae(); 
$var->method(); 

しかしPHP 5.4にあなたがより速く、呼び出しのために、代わりにこの構文を使用することができますので、同様

(new ClassName)->method(); 
+2

あるいは、彼はメソッドを静的に変更する必要があります(これは現在、アップグレードされたPHP環境で実行されている既存のコードベースです)。 – webbiedave

+1

@webbiedave - そうでもできます:P –

+0

@mamdouh あなたは素晴らしいです、エラーはなくなりました。 ありがとうございます。 素敵な夜を過ごしましょう。 心から、 Jaco –

2

また、そのように静的である方法を変更することができます。

class Handler { 
    public static function helloWorld() { 
     echo "Hello world!"; 
    } 
} 
関連する問題