के साथ PHP नेमस्पेस आश्चर्यजनक है कि PHP 5.3 का उपयोग करके कक्षाओं को नामस्थान करने की नई क्षमता का उपयोग करते समय किसी और को इस समस्या का सामना करना पड़ा है।डायनामिक क्लास नाम
मैं अपने आवेदन में उपयोगकर्ता प्रकारों को परिभाषित करने के लिए एक अलग वर्ग का उपयोग कर एक गतिशील कक्षा कॉल उत्पन्न कर रहा हूं। असल में कक्षा निश्चित प्रकारों का एक पूर्णांक प्रतिनिधित्व लेता है और उन्हें व्याख्या करता है, उस उपयोगकर्ता के लिए मॉडल के रूप में बुलाए जाने वाले वर्ग नाम वाले स्ट्रिंग को वापस कर देता है।
मेरे पास उपयोगकर्ता के प्रकार के लिए वैश्विक स्कोप में परिभाषित नाम के साथ एक ऑब्जेक्ट मॉडल है, लेकिन मेरे पास संपादक नामस्थान में उपयोगकर्ता के संपादक के लिए एक ही नाम वाला एक और ऑब्जेक्ट है। किसी कारण से, PHP मुझे निम्नानुसार नामांकित गतिशील कॉल करने की अनुमति नहीं देगा।
$definition = Definer::defineProfile($_SESSION['user']->UserType);
new \Editor\$definition();
समान वाक्य रचना ग्लोबल नेम स्पेस में वैश्विक बुनियादी ऑब्जेक्ट मॉडल फोन करने के लिए काम करता है और मैं इसे इस तरह से मज़बूती से उपयोग करें आवेदन भर।
$definition = Definer::defineProfile($_SESSION['user']->UserType);
new $definition();
यह सही ढंग से गतिशील रूप से वांछित कक्षा को कॉल करेगा।
क्या कोई कारण अलग-अलग व्यवहार करेगा, या इस मनोरंजक में नामस्थानों के लिए गतिशील कॉलिंग लागू नहीं की गई है, क्योंकि यह एक नई सुविधा है? स्पष्ट रूप से कोड में अपना नाम रखने के बिना, लेकिन एक चर के भीतर किसी अन्य नामस्थान से कक्षा को गतिशील रूप से कॉल करने का कोई और तरीका है?
मैं उस – yoda