2008-10-23 10 views
11

साथ प्रयोग करते हैं मैं php simple HTML DOM parser उपयोग करने के लिए छवि, शीर्षक, दिनांक, और लेख से भरा एक पृष्ठ पर प्रत्येक लेख से वर्णन हड़पने के लिए चाहते हैं। एपीआई को देखते समय मुझे लगता है कि इसमें एक set_callback है जो कॉलबैक फ़ंक्शन सेट करता है। हालांकि मुझे यकीन नहीं है कि यह क्या करता है या मैं इसका उपयोग कैसे करूं? उदाहरणों में से एक में यह एक फ़ंक्शन को कॉल करने के लिए उपयोग किया जाता है जो कुछ सामानों को स्ट्रिप करता है, मुझे आश्चर्य है कि क्या आपको इसका उपयोग सभी कार्यों को कॉल करने के लिए करना है?क्या एक कॉलबैक समारोह है और मैं इसे कैसे OOP

मैं im सोच कारण है कि मैं इस का उपयोग लगता है, और के रूप में मैं एक कॉलबैक फ़ंक्शन भर में पहले कभी नहीं आए हैं कि यह क्या क्या करता है! $ चर():

<?php 

function thisFuncTakesACallback($callbackFunc) 
{ 
    echo "I'm going to call $callbackFunc!<br />"; 
    $callbackFunc(); 
} 

function thisFuncGetsCalled() 
{ 
    echo "I'm a callback function!<br />"; 
} 

thisFuncTakesACallback('thisFuncGetsCalled'); 
?> 

आप एक समारोह जैसा कि इसके नाम इस तरह एक चर में संग्रहीत है कि कॉल कर सकते हैं:

उत्तर

20

यहाँ एक बुनियादी कॉलबैक फ़ंक्शन उदाहरण है।

तो, ऊपर के उदाहरण में, हम के नाम thisFuncTakesACallback() जो तब समारोह में पारित कॉल करने के लिए समारोह thisFuncGetsCalled गुजरती हैं।

+0

महान और सरल उत्तर, धन्यवाद। मेरे पास एक सवाल है, हालांकि, यह सुविधा उपलब्ध न्यूनतम PHP संस्करण क्या है? –

+3

यह उत्तर पुराना है। आज, PHP एक विशिष्ट प्रकार के फ़ंक्शन को संदर्भित करने के लिए 'कॉलबैक' शब्द का उपयोग करता है। अधिक जानकारी के लिए इस मामले पर PHP के अपने दस्तावेज़ को पढ़ें: http://php.net/manual/en/function.call-user-func.php –

+0

यह अभी भी php7 –

3

एक कॉलबैक समारोह है कि समारोह का उपयोग करेगा जो कुछ भी पर डेटा है एक विशेष विधि द्वारा लौटाया।

$html = file_get_html('http://example.com'); 
$html->set_callback('make_bold'); 
$html->find('#title'); // returns an array 

function make_bold($results) { 
// make the first result bold 
    return '<b>'.$results[0].'</b>'; 
} 

यानी, समारोह "make_bold()" पाया किसी भी डेटा पर चलाया जाएगा:

मुझे यकीन है कि कैसे इस विशेष पुस्तकालय काम करता है, लेकिन यह के रूप में सरल कुछ हो सकता है नहीं कर रहा हूँ। दोबारा, मुझे यकीन नहीं है कि यह विशेष लाइब्रेरी कैसे काम करती है (यानी, कॉलबैक फ़ंक्शन किस तरीके से कॉल किया जाएगा)

2

कॉलबैक या तो एक फ़ंक्शन, ऑब्जेक्ट इंस्टेंस 'विधि या क्लास पर एक स्थिर विधि है। किसी भी तरह से, यह एक फंक्शन पॉइंटर की तरह है। कुछ भाषाओं में, फ़ंक्शन एक विशिष्ट प्रकार होते हैं। तो आप एक चर को एक समारोह असाइन कर सकते हैं। इन्हें आमतौर पर फ़ंक्शन उन्मुख भाषा कहा जाता है। एक अच्छा उदाहरण जावास्क्रिप्ट है।

पीएचपी में, एक कॉलबैक हो सकता है की किसी भी:

$fn = 'foo'; // => foo() 
$fn = array($obj, 'foo'); // => $obj->foo() 
$fn = array('Foo', 'bar'); // => Foo::bar() 

is_callable के लिए मैनुअल प्रविष्टि देखें।

आप बल्कि वर्बोज़ समारोह call_user_func साथ एक कॉलबैक आह्वान कर सकते हैं।

0

Defination

एक कॉलबैक/प्रतिदेय (या तो यह अनाम या नामित समारोह है) है कि हम समारोह पैरामीटर के रूप में एक और कार्य करने के लिए पारित एक साधारण कार्य है जो परिणाम रिटर्न कि समारोह को पारित कर दिया है।

उदाहरण

function iWillReturnCallback($callBackHere){ 
    return $callBackHere; 
} 

function iAmCallBack(){ 
    echo "I am returned with the help of another function"; 
} 

iWillReturnCallback(iAmCallBack()); 

//--Output -> I am returned with the help of another function 

भ्रमित नहीं होना है

वहाँ php में कुछ डिफ़ॉल्ट कार्यों है कि उनके क्योंकि विवादित बचने के पैरामीटर में एक स्ट्रिंग के रूप कॉलबैक फ़ंक्शन का नाम स्वीकार करता हैं निरंतर नाम और समारोह नाम के बीच। तो चीजों के इन प्रकार में भ्रमित नहीं होना है।

0

PHP 5.3 साथ, आप अब ऐसा कर सकते हैं:

function doIt($callback) { $callback(); } 

doIt(function() { 
    // this will be done 
}); 

अंत में, एक अच्छा तरीका यह करने के लिए। PHP के लिए एक बढ़िया जोड़ा, क्योंकि कॉलबैक भयानक हैं।

+0

में काम करता है क्या होता है यदि '$ कॉलबैक 'कोई फ़ंक्शन नहीं है ? क्या PHP एक घातक त्रुटि, चेतावनी, या कुछ भी फेंक देता है? – Spartacus

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