2013-10-30 27 views
19

Yakın zamanda PHP 5.4'e bir güncelleme yaptım ve statik ve statik olmayan kod hakkında bir hata alıyorum.Statik olmayan yöntem ..... statik olarak adlandırılmamalıdır

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

Birinin yardımcı olabilir umut:

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 

Bu 371 çizgidir:

Bu

hatadır. Bunu anlamı

+3

Yığın taşmasına hoş geldiniz. Bir kullanıcı adı seçmelisiniz. Acemi Hobby PHP Boy'i öneririm. – webbiedave

+3

Teşekkür ederim ve bu benim için iyi bir isim, Sergiu;) –

cevap

41

gibi çağrılmalıdır:

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

static ve non-static arasındaki farktır sen classname çağrı böylece o zaman ve çağrıya :: eklemek ilki başlatma ihtiyacı olmadığını yöntem hemen.

ClassName::method(); 

ve yöntem statik değilse bunu gibi ilklendirmelisiniz: şöyle

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

Ancak PHP 5.4'te yerine daha hızlı arama için bu sözdizimini kullanabilirsiniz
(new ClassName)->method(); 
+2

Ya da belki de statik olmak için yöntemi değiştirmelidir (bu, şu anda yükseltilmiş bir PHP ortamında çalıştırılan mevcut bir kod tabanıdır). – webbiedave

+1

@webbiedave - evet bu da işe yarar: P –

+0

@mamdouh Harikasınız, hata gitti. Yardımlarınız için teşekkür ederiz. İyi akşamlar. içtenlikle, Jaco –

2

Ayrıca şöyle statik olması yöntemini değiştirebilirsiniz:

class Handler { 
    public static function helloWorld() { 
     echo "Hello world!"; 
    } 
} 
İlgili konular