web-dev-qa-db-ja.com

非静的メソッド.....静的に呼び出さないでください

最近、PHP 5.4に更新しました。静的コードと非静的コードに関するエラーが発生します。

これはエラーです:

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  = VTimer::get($options['magic']);

誰かが助けてくれるといいのですが。

28

つまり、次のように呼び出す必要があります。

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

staticnon-staticの違いは、最初のものは初期化を必要としないため、classnameを呼び出してから::を追加し、すぐにメソッドを呼び出すことができることです。 。そのようです:

ClassName::method();

メソッドが静的でない場合は、次のように初期化する必要があります。

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

ただし、PHP 5.4では、代わりにこの構文を略記として使用できます。

(new ClassName)->method();
56

次のようにメソッドを静的に変更することもできます。

class Handler {
    public static function helloWorld() {
        echo "Hello world!";
    }
}
7
deadghost