2012-03-10 11 views
5

निम्नलिखित कोड ठीक काम करता है।स्थिर वर्ग विधि के लिए call_user_func का उपयोग कैसे करें?

LibraryTests::TestGetServer(); 

LibraryTests में कार्यों की सरणी प्राप्त करें और उन्हें चलाने:

class LibraryTests extends TestUnit { 

    function TestGetServer() { 
     TestUnit::AssertEqual(GetServer(), "localhost/"); 
    } 
    . 
    . 
    . 
: Warning: call_user_func(LibraryTests::TestGetServer()) [function.call-user-func]: First argument is expected to be a valid callback

यहाँ वर्ग कि बुलाया जा रहा है:

$methods = get_class_methods('LibraryTests'); 
foreach ($methods as $method) { 
    call_user_func('LibraryTests::' . $method . '()'); 
} 

यह एक त्रुटि फेंकता

कैसे ठीक करें?

PHP 5.2.8 में काम करना।

+0

फ़ंक्शन में कोई पैरामीटर नहीं है – m13r

उत्तर

11

या तो (PHP 5.2.3 के रूप में):

$methods = get_class_methods('LibraryTests'); 
foreach ($methods as $method) { 
    call_user_func('LibraryTests::' . $method); 
} 

या (पुराने):

$methods = get_class_methods('LibraryTests'); 
foreach ($methods as $method) { 
    call_user_func(array('LibraryTests', $method)); 
} 

call_user_func­Docs और Callback Pseudo-Type­Docs देखें।

+0

यदि आपके पास काम करने के लिए वैध कॉलबैक होना आवश्यक है तो '() 'संलग्न न करें। यदि आप अमान्य मानों को '$ विधि' में डालते हैं, तो यह काम नहीं करता है। यदि आप वहां वैध मान डालते हैं, तो यह काम करता है। ध्यान रखें कि यह केवल स्थिर वर्ग विधियों के लिए है। – hakre

+0

दोनों फेंक '... [function.call-उपयोगकर्ता के समारोह]: पहले तर्क में कोई मान्य कॉलबैक होने की उम्मीद है ...' –

+0

ठीक है, सब से पहले mehtod अपनी कक्षा में के रूप में स्थिर निर्धारित किए हैं: 'स्थिर समारोह TestGetServer '- या सरणी नोटेशन के साथ एक वर्ग उदाहरण पर काम करते हैं। मैंने मैनुअल से दो पेजों को लिंक किया है जिसमें बहुत सारी जानकारी और उदाहरण हैं और आपको इस तरह का नेतृत्व करना चाहिए ताकि आप अपनी आवश्यकताओं के अनुरूप किसी भी तरह से समस्या का समाधान कर सकें। – hakre

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