क्या पैरामीटर के रूप में पारित होने वाले बंद होने के लिए $this
को बांधने का कोई तरीका है? मैं मैन्युअल या इंटरनेट पर जो कुछ भी पा सकता हूं उसे पढ़ और पढ़ता हूं, लेकिन इस ब्लॉग पोस्ट को छोड़कर कोई भी इस व्यवहार का उल्लेख नहीं करता है: http://www.christophh.net/2011/10/26/closure-object-binding-in-php-54/ जो इसका उल्लेख करता है लेकिन यह नहीं दिखाता कि यह कैसे करना है।PHP 5.4 में विधि पैरामीटर के रूप में पारित होने वाले बंद होने के लिए इसे कैसे बाध्य करें?
तो यहां एक उदाहरण है। get(function() {})
विधि को कॉल करते समय मैं चाहता हूं कि इसे वापस कॉलबैक फ़ंक्शन ऑब्जेक्ट से बाध्य था यानी $this
पर बाध्य था, लेकिन दुर्भाग्यवश यह काम नहीं करता है। क्या मैं ऐसा कर सकता हूं?
class APP
{
public $var = 25;
public function __construct() {
}
public function get($callback) {
if (!is_callable($callback)) {
throw new InvalidArgumentException('Paran must be callable.');
}
// $callback->bindTo($this);
$callback->bindTo($this, $this);
$callback();
}
}
$app = new APP();
$app->get(function() use ($app) {
echo '<pre>';
var_dump($app);
echo '<br />';
var_dump($this);
});
$app
काम करता है। $this
शून्य है।
अरे! बहुत बहुत धन्यवाद Guilherme!मैंने क्लोजर :: बाइंड की कोशिश की, लेकिन मुझे नहीं पता था कि यह वापसी मूल्य था जिसके बाद मुझे फोन करना चाहिए। –
@ अज्ञात.बर्ड आपका स्वागत है। :) –
और एक पंक्ति में '$ कॉलबैक-> बाइंडो ($ यह) -> __ invoke(); ':) –