2013-10-30 18 views
19

Gần đây, tôi đã cập nhật lên PHP 5.4 và tôi gặp lỗi về mã tĩnh và không tĩnh.Phương pháp không tĩnh ..... không nên được gọi là tĩnh

Đây là lỗi:

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 

Đây là dòng 371:

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

Tôi hy vọng ai đó có thể giúp đỡ.

+3

Chào mừng bạn đến ngăn xếp tràn. Bạn nên chọn tên người dùng. Tôi đề nghị 'Novice Hobby PHP Boy'. – webbiedave

+3

Cảm ơn bạn và đó là một cái tên tốt cho tôi, Sergiu;) –

Trả lời

41

Điều đó có nghĩa nó nên được gọi như:

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

sự khác biệt giữa staticnon-static là người đầu tiên không cần khởi tạo, do đó bạn có thể gọi classname sau đó nối :: với nó và gọi phương pháp ngay lập tức. như vậy:

ClassName::method(); 

và nếu phương pháp này không phải là tĩnh bạn cần phải khởi tạo nó như vậy:

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

Tuy nhiên trong PHP 5.4, bạn có thể sử dụng cú pháp này để thay thế cho các cuộc gọi nhanh hơn:

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

Hoặc có lẽ anh ta nên thay đổi phương thức thành tĩnh (vì đây là một codebase hiện đang được chạy trong môi trường PHP được nâng cấp). – webbiedave

+1

@webbiedave - có điều đó cũng hoạt động: P –

+0

@mamdouh Bạn tuyệt vời, lỗi đã biến mất. Cảm ơn sự giúp đỡ của bạn. Chúc một buổi tối vui vẻ. xin chân thành, Jaco –

2

Bạn cũng có thể thay đổi phương thức tĩnh như vậy:

class Handler { 
    public static function helloWorld() { 
     echo "Hello world!"; 
    } 
} 
Các vấn đề liên quan