2009-05-20 21 views
6

तो मैं PHP में ओओपी नहीं हूं।फ़ंक्शन के अंदर किसी ऑब्जेक्ट को कॉल करें

यहां मेरा मुद्दा है कि मेरे पास एक वस्तु है जिसे मैं एक फ़ंक्शन से कॉल कर सकता हूं और यह एक सारणी प्रदान करता है। तो यहाँ कोड है।

$obj = new OBJ(); 

function go($url){ 
    $array = $obj->grabArray($url); 
    echo $array['hits']; 
} 

go('http://www.mysite.com/hello'); 

यह मैं त्रुटि

गंभीर त्रुटि देता है: एक गैर वस्तु

उत्तर

35

यह एक OOP मुद्दा नहीं है पर एक सदस्य समारोह grabArray() करने के लिए कॉल, यह एक गुंजाइश मुद्दा है। फ़ंक्शन के अंदर $ obj दिखाई नहीं दे रहा है()। आप या तो इसे एक पैरामीटर के रूप में पारित करने के लिए की जरूरत है, या यह समारोह की गुंजाइश में लाने के वैश्विक कीवर्ड (अनुशंसित नहीं)

अनुशंसित तरीका

$obj = new OBJ(); 

go('http://www.mysite.com/hello', $obj); 

function go($url, $object) 
{ 
    $array = $object->grabArray($url); 
    echo $array['hits']; 
} 

अनुशंसित नहीं जिस तरह से

$obj = new OBJ(); 

go('http://www.mysite.com/hello'); 

function go($url) 
{ 
    global $obj; 
    $array = $object->grabArray($url); 
    echo $array['hits']; 
} 

है साथ एक और समाधान जो संरचना की ओओपी अवधारणा के समान है - आप ओबीजे का उदाहरण बनाने के लिए गो() फ़ंक्शन को जिम्मेदार बना देंगे।

go('http://www.mysite.com/hello'); 

function go($url) 
{ 
    $obj = new OBJ(); 
    $array = $obj->grabArray($url); 
    echo $array['hits']; 
} 

यह शायद आदर्श नहीं है, हालांकि है, जब से तुम एक नया OBJ उदाहरण हर बार जब आप जाने निष्पादित() बनाएंगे। आप एक स्थिर चर

function go($url) 
{ 
    static $obj; 
    if (is_null($obj)) 
    { 
     $obj = new OBJ(); 
    } 
    $array = $obj->grabArray($url); 
    echo $array['hits']; 
} 

के साथ "कैशिंग" जाने के अंदर OBJ का उदाहरण() द्वारा इसे ठीक कर सकता है लेकिन इस रचना की तरह दृष्टिकोण वास्तव में केवल उपयोगी है जब आप किसी और के अलावा कहीं भी OBJ के अपने उदाहरण का उपयोग नहीं करते go() फ़ंक्शन के अंदर - यदि आप इसे कहीं और उपयोग करते हैं, तो पैरामीटर दृष्टिकोण सबसे अच्छा विकल्प है।

यह काम के लिए सही समाधान चुनने के बारे में है!

+0

अच्छा काम करता है। धन्यवाद! – Tim

+0

तीसरी विधि धन्यवाद प्यार – doflamingo

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