जब आप उस पर एक संरक्षित या निजी पद्धति को कॉल करने का प्रयास करेंगे, तो यह विफल हो जाएगा, क्योंकि इसका उपयोग उस तरह से बाहर से कॉल करने के रूप में गिना जाता है। जहाँ तक मुझे पता है 5.3 में इसके आसपास काम करने का कोई तरीका नहीं है, लेकिन PHP 5.4 आओ, यह अपेक्षित रूप से काम करेगा, बॉक्स से बाहर:
class Hello {
private $message = "Hello world\n";
public function createClosure() {
return function() {
echo $this->message;
};
}
}
$hello = new Hello();
$helloPrinter = $hello->createClosure();
$helloPrinter();
इससे भी अधिक, आप अनाम समय के कार्यों के लिए रनटाइम के दौरान इस बिंदु को $ कितना बदल पाएंगे, (रिबंडिंग बंद करना):
class Hello {
private $message = "Hello world\n";
public function createClosure() {
return function() {
echo $this->message;
};
}
}
class Bye {
private $message = "Bye world\n";
}
$hello = new Hello();
$helloPrinter = $hello->createClosure();
$bye = new Bye();
$byePrinter = $helloPrinter->bindTo($bye, $bye);
$byePrinter();
प्रभावी रूप से, एनोनिमस फ़ंक्शन में एक बाइंड्टो () विधि होगी , जहां पहले पैरामीटर का उपयोग यह निर्दिष्ट करने के लिए किया जा सकता है कि यह किस बिंदु पर $ है, और दूसरा पैरामीटर यह नियंत्रित करता है कि दृश्यता स्तर क्या होना चाहिए । यदि आप दूसरे पैरामीटर को छोड़ देते हैं, तो दृश्यता "बाहर", जैसे कॉलिंग से होगी। केवल सार्वजनिक संपत्तियों तक ही पहुँचा जा सकता है। साथ ही बाइंडो के काम करने के तरीके पर भी ध्यान दें, यह मूल फ़ंक्शन को संशोधित नहीं करता है, यह एक नया रिटर्न देता है ।