2013-10-30 10 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 है:

यह त्रुटि है।

+3

स्टैक ओवरफ़्लो में आपका स्वागत है। आपको एक उपयोगकर्ता नाम चुनना चाहिए। मैं सुझाव देता हूं 'नोविस हॉबी PHP बॉय'। – webbiedave

+3

धन्यवाद और यह मेरे लिए एक अच्छा नाम है, Sergiu;) –

उत्तर

41

यह इसका मतलब है कि जैसे बुलाया जाना चाहिए:

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

static और non-static के बीच अंतर यह है कि पहले एक प्रारंभ की जरूरत नहीं है तो आप classname कॉल कर सकते हैं तो यह और कॉल करने के लिए :: संलग्न विधि तुरंत। तो जैसे:

ClassName::method(); 

और यदि आप ऐसा है जैसे कि यह प्रारंभ करने की आवश्यकता है, तो विधि स्थिर नहीं है:

:

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

हालांकि पीएचपी 5.4 में आप के बजाय तेजी से फोन करने के लिए इस वाक्य रचना का उपयोग कर सकते

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

या शायद उसे स्थिर होने के लिए विधि को बदलना चाहिए (क्योंकि यह एक मौजूदा कोडबेस अब अपग्रेड किए गए PHP वातावरण में चल रहा है)। – webbiedave

+1

@webbiedave - हाँ जो भी काम करेगा: पी –

+0

@mamdouh आप महान हैं, त्रुटि समाप्त हो गई है। आपकी मदद के लिए धन्यवाद। एक अच्छी शाम है। ईमानदारी से, जैको –

2

तुम भी विधि को बदल सकते हैं तो तरह स्थिर होने के लिए:

class Handler { 
    public static function helloWorld() { 
     echo "Hello world!"; 
    } 
} 
संबंधित मुद्दे