2010-02-18 16 views
44

विफल रहता है मैं इस पद्धति है कि मैं $ इस में उपयोग करना चाहते हैं, लेकिन सभी मैं है: गंभीर त्रुटि: $ इस का उपयोग करते हुए जब वस्तु के संदर्भ में नहीं।एक स्थिर समारोह के अंदर इस का उपयोग करते हुए

मैं इसे काम करने के लिए कैसे प्राप्त कर सकता हूं?

public static function userNameAvailibility() 
{ 
    $result = $this->getsomthin(); 
} 

उत्तर

79

यह सही तरीका

public static function userNameAvailibility() 
{ 
    $result = self::getsomthin(); 
} 

उपयोग self:: बजाय $this->स्थिर तरीकों के लिए है।

देखें: PHP Static Methods Tutorial अधिक जानकारी :) के लिए

+0

सच है, के बारे में मैं इस उत्तर पोस्ट करने के लिए किया गया था। –

+7

आपको यह भी याद रखना चाहिए कि getomthin() विधि स्थिर भी होनी चाहिए - आप स्थैतिक विधि के अंदर गैर स्थैतिक को कॉल नहीं कर सकते हैं। – thorinkor

+7

@ सर्फ्राज़, क्या यह 'self ::' के बजाय 'स्थिर ::' नहीं होना चाहिए? – Pacerier

8

आप एक स्थिर समारोह के अंदर $this उपयोग नहीं कर सकते, क्योंकि स्थिर कार्यों किसी भी instantiated वस्तु से स्वतंत्र हैं। फ़ंक्शन को स्थैतिक बनाने का प्रयास करें।

संपादित: परिभाषा के अनुसार, स्थिर तरीकों किसी भी instantiated वस्तु के बिना कहा जा सकता है, और इस तरह वहाँ एक स्थिर विधि के अंदर $this की कोई सार्थक इस्तेमाल होता है।

+0

होनी चाहिए जब आप स्थिर आवंटित करने के लिए कोशिश कर रहे हैं एक आवृत्ति चर के लिए परिवर्तनीय। क्या यह possibel नहीं है? – Jom

2

एक्सेसर this वर्ग की वर्तमान उदाहरण को दर्शाता है। के रूप में स्थिर तरीकों उदाहरण बंद नहीं चलता है, का उपयोग कर this वर्जित है। इसलिए किसी को सीधे विधि को कॉल करने की आवश्यकता है। स्थिर विधि उदाहरण के दायरे में कुछ भी नहीं पहुंच सकती है, लेकिन उदाहरण के दायरे के बाहर कक्षा के दायरे में सब कुछ एक्सेस करें।

1

केवल स्थिर कार्यों स्वयं का उपयोग कर स्थिर समारोह :: भीतर कहा जा सकता है कि आपकी कक्षा गैर स्थिर समारोह जो आप उपयोग करना तो आप उदाहरण घोषणा कर सकते हैं चाहते हैं, तो एक ही कक्षा के और इसका इस्तेमाल करें।

<?php 
class some_class{ 
function nonStatic() { 
    //..... Some code .... 
    } 
Static function isStatic(){ 
    $someClassObject = new some_class; 
    $someClassObject->nonStatic(); 
    } 
} 
?> 
0

यह एक दयालु PHP एक वर्णनात्मक पर्याप्त त्रुटि नहीं दिखाता है। आप एक स्थिर समारोह के अंदर $ this-> उपयोग नहीं कर सकते, बल्कि स्वयं का उपयोग :: आप एक ही कक्षा

1

यहाँ अंदर एक समारोह कॉल करने के लिए है, तो क्या होता है जब एक वर्ग की एक विधि में कहा जाता है का एक उदाहरण है एक गलत तरीका आप कुछ चेतावनी जब इस कोड को निष्पादित देखेंगे, लेकिन यह काम करेंगे और प्रिंट होगा: "मैं कर रहा हूँ एक: बी संपत्ति मुद्रण"। (Php5.6 में निष्पादित)

class A { 
    public function aMethod() { 
     echo "I'm A: "; 
     echo "printing " . $this->property; 
    } 
} 

class B { 
    public $property = "B property"; 

    public function bMethod() { 
     A::aMethod(); 
    } 
} 

$b = new B(); 
$b->bMethod(); 

यह तेजी कि चर $ इस, एक विधि में प्रयोग किया जाता है जो एक स्थिर पद्धति के रूप में कहा जाता है, "फोन करने वाले" वर्ग के उदाहरण के लिए कहते हैं। उदाहरण में ऊपर वहाँ $ this-> संपत्ति एक वर्ग में प्रयोग किया जाता है जो बी

संपादित की संपत्ति की ओर इशारा करता है:

The pseudo-variable $this is available when a method is called from within an object context. $this is a reference to the calling object (usually the object to which the method belongs, but possibly another object, if the method is called statically from the context of a secondary object). PHP > The Basics

संबंधित मुद्दे