क्या कोई तरीका है कि निहित बंद करने में उपयोग के लिए वैश्विक के रूप में शीर्ष-स्तरीय चर घोषित कर सकता है?PHP बंद और अंतर्निहित वैश्विक परिवर्तनीय दायरा
उदाहरण के लिए, इस जैसे कोड के साथ काम करता है, तो:
$a = 0; //A TOP-LEVEL VARIABLE
Alpha::create('myAlpha')
->bind(DataSingleton::getInstance()
->query('c')
)
->addBeta('myBeta', function($obj){
$obj->bind(DataSingleton::getInstance()
->query('d')
)
->addGamma('myGamma', function($obj){
$obj->bind(DataSingleton::getInstance()
->query('a')
)
->addDelta('myDelta', function($obj){
$obj->bind(DataSingleton::getInstance()
->query('b')
);
});
})
->addGamma('myGamma', function($obj){
$a++; //OUT OF MY SCOPE
$obj->bind(DataSingleton::getInstance()
->query('c')
)
.
.
.
बंद जैसे एक विधि से कहा जाता है:
public function __construct($name, $closure = null){
$this->_name = $name;
is_callable($closure) ? $closure($this) : null;
}
तो सारांश/टी एल में, डॉ, वहाँ है global
कीवर्ड या $GLOBALS
सुपर-ग्लोबल का उपयोग किए बिना बंद करने (या अन्य कार्यों को मुझे लगता है) में उपयोग के लिए ग्लोबल के रूप में विविध रूप से घोषित करने का एक तरीका?
मैं एक मंच पर इस विषय शुरू कर दिया मैं अक्सर (http://www.vbforums.com/showthread.php?p=3905718#post3905718)
ध्यान दें कि 'उपयोग' केवल माता-पिता के दायरे से वैरिएबल चर का उपयोग करता है। एक परिदृश्य में जहां वैश्विक दायरे में बंद नहीं किया गया है, आपको अभी भी 'वैश्विक' कीवर्ड का उपयोग करना होगा। हालांकि यह ओपी के परिदृश्य के लिए काम करना चाहिए। – Gordon
हम्म, मुझे डर था कि यह 'उपयोग' होगा। उम्मीद है कि यह मुद्दा उस प्रणाली में प्रचलित नहीं होगा जो मैं विकसित कर रहा हूं, क्योंकि अधिकांश * वैश्विक * कॉल स्थिर उदाहरणों के लिए संभवतः होंगे। मैं '$ ग्लोबल' और 'call_user_func_array()' पर 'निकालने() 'से युक्त एक चाल के साथ बेवकूफ़ बनाने की कोशिश कर रहा हूं ... – Dan
इसके अलावा, ओपी के उदाहरण में दिखाए गए' $ ++ 'को वैश्विक रूप से लागू नहीं किया जाएगा '$ a' जब तक संदर्भ द्वारा इसका उपयोग नहीं किया जाता है, उदाहरण के लिए, '& $ a'। वस्तुओं का संदर्भ हालांकि संदर्भ में किया जाता है। – Gordon