मैंने हमेशा सोचा कि नामस्थान का मुख्य लक्ष्य नाम टकराव और अस्पष्टता को रोकने के लिए है। आपके द्वारा बनाए गए कोड, और आंतरिक पीएचपी वर्गों/कार्य/स्थिरांक या तीसरे पक्ष के वर्गों/कार्य/स्थिरांक के बीचप्रोग्रामिंग भाषाओं में 'उपयोग' या 'उपयोग' का उपयोग
नाम टकराव:
1 समस्या php.net से नामस्थान द्वारा तय #।
हालांकि, अधिकांश भाषाएं "उपयोग" कीवर्ड को किसी अन्य तरीके से उपनाम या अन्य नामस्थान आयात करने के लिए लागू करती हैं। मुझे पता है कि यह कैसे काम करता है, लेकिन मुझे समझ में नहीं आता कि ऐसी कार्यक्षमता का उपयोग क्यों किया जाता है।
किसी 'उपयोग' कीवर्ड का प्रभावी ढंग से नामस्थान के उद्देश्य को हराने का उपयोग नहीं कर रहा है?
namespace core\utils;
class User {
public static function hello(){
return "Hello from core!";
}
}
//---------------------------------------------------
namespace core2\utils;
class User {
public static function hello(){
return "Hello from core2!";
}
}
//---------------------------------------------------
namespace core2;
//causes name collision, we now have two different classes of type 'utils\User'
use core\utils; //without this line the result is 'Hello from core2'
class Main {
public static function main(){
echo utils\User::hello();
}
}
Main::main();
//outputs Hello from core!
?>
क्या मुझे कुछ याद आ रहा है या 'उपयोग' कीवर्ड का उपयोग वास्तव में आम तौर पर निराश होता है?
किसी भी तरह से, वास्तव में encapsulation बलिदान के लिए वास्तव में एक अच्छा विचार क्या है?
मैं उपयोग का उपयोग करता था, लेकिन अब मुझे यकीन नहीं है कि उपयोग कब किया जाना चाहिए।
संपादित करें: ठीक है मुझे यह सीधे प्राप्त करने दें: यदि मैं संक्षिप्त नाम पाने के लिए 'उपयोग' का उपयोग करता हूं, तो यह वैश्विक नामस्थान में कक्षा घोषित करने से बेहतर कैसे है? नीचे देखें:
namespace core\utils\longname {
class User {} //declare our class in some namespace
}
//------------------Other File---------------------------
namespace { //in another file import our long name ns and use the class
use core\utils\longname\User as User;
new User();
}
^इस घोषणा के खिलाफ इस तरह नेमस्पेसिंग का लाभ क्या है:
namespace {
class User {} //declare our class in global namespace
}
//------------------Other File---------------------------
namespace { //in another file just use the class
new User();
}
वहाँ कोई अंतर बिल्कुल दोनों के बीच है?
"का उपयोग करना" इसका उपयोग किया जाता है क्योंकि यह गधे में दर्द होता है और हर समय सबकुछ स्पेल करने के लिए अच्छी दृश्य समझ के विपरीत होता है। –
यह वास्तव में सच है, लेकिन ऐसा लगता है जैसे मैं नामस्थान को चोट पहुंचा रहा हूं। अस्पष्टता और पठनीयता के बीच सीमा कहां है? – Webmut
उपनाम अनावश्यक होना चाहिए।लेकिन वर्तमान में नामस्थानों का उप-उत्पाद उनके इच्छित उद्देश्य के लिए उपयोग नहीं किया जा रहा है, बल्कि पहचानकर्ता टैक्सोनोमी बनाने के लिए। – mario