2012-01-12 13 views
7
श्रृंखलित

संभव डुप्लिकेट:
Calling closure assigned to object property directlyपीएचपी बंद समारोह stdObject के साथ जोड़ दिया और

अगर मैं इस तरह एक वर्ग है: जब

class test{ 
    function one(){ 
    $this->two()->func(); //Since $test is returned, why can I not call func()? 
    } 

    function two(){ 
    $test = (object) array(); 
    $test->func = function(){ 
     echo 'Does this work?'; 
    }; 
    return $test; 
    } 
} 

$new = new test; 
$new->one(); //Expecting 'Does this work?' 

तो मेरे सवाल है, मैं फ़ंक्शन एक से फ़ंक्शन दो को कॉल करता हूं, फ़ंक्शन दो $ टेस्ट वैरिएबल देता है जिसमें func() से जुड़ा हुआ फ़ंक्शन होता है। मैं इसे एक जंजीर विधि के रूप में क्यों नहीं बुला सकता?

संपादित मैं सिर्फ याद आया कि यह भी $ इस- उपयोग करके किया जा सकता है> समारोह -> __ किसी को भी है कि जरूरत है कि के लिए() आह्वान।

उत्तर

6

क्योंकि यह वर्तमान में PHP की एक सीमा है। आप जो कर रहे हैं वह तार्किक है और संभव होना चाहिए। वास्तव में, आप लेखन से कामचलाऊ समाधान कर सकते हैं:

function one(){ 
    call_user_func($this->two()->func); 
} 

या

function one(){ 
    $f = $this->two()->func; 
    $f(); 
} 

बेवकूफ, मुझे पता है।

+0

हे, दिलचस्प। सहायता के लिए धन्यवाद। –

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