2011-09-03 8 views
8

क्या PHP में दृश्यता को सीमित करने का कोई तरीका है जैसे जावा में "पैकेज" दृश्यता कार्य करता है या कम से कम "मित्र" दृश्यता सी ++ में होती है? बड़ी ओओपी परियोजना को बनाए रखने के लिए सबसे अच्छा अभ्यास क्या है और किसी को कोड के किसी भी भाग का उपयोग न करने दें?PHP मित्र/पैकेज दृश्यता

मैं जितना संभव हो उतना निजी और संरक्षित दृश्यता का उपयोग करता हूं लेकिन कभी-कभी यह पर्याप्त नहीं होता है। मुझे इस अनुरोध के बारे में पता है: https://bugs.php.net/bug.php?id=55331। PHP में ऐसी चीज को लागू करने में कोई प्रगति है? क्या आपके कोड (विधियों, वर्ग चर) को कहीं से भी एक्सेस करने से बचाने के लिए कोई कामकाज है?

+0

जावा में पैकेज की तरह बिल्कुल नहीं, लेकिन [नेमस्पेस] (http://php.net/manual/en/language.namespaces.php) कोड encapsulation के लिए सेवा करेगा। – Shef

+0

क्या आप एक छोटा उदाहरण टाइप कर सकते हैं, कृपया? –

+0

बस एक विचार, यदि आपको वास्तव में आपकी आवश्यकता है तो यह देखने के लिए कि आपका कोड कौन सा कोड कॉल कर रहा है, यह देखने के लिए 'debug_backtrace' [http://php.net/manual/en/function.debug-backtrace.php] का उपयोग कर सकता है। अनिवार्य रूप से अपना खुद का रनटाइम एक्सेस नियंत्रण लिखना। शायद इसके लायक से अधिक काम, और 'debug_backtrace' में प्रदर्शन हिट है। – Chris

उत्तर

3

के रूप में कहा गया है here:

नहीं, आप एक नाम स्थान घोषित करने के बाद एक चर सेट कर सकते हैं, लेकिन चर हमेशा वैश्विक क्षेत्र में उपलब्ध नहीं होगा। वे नामस्थानों से कभी भी बाध्य नहीं होते हैं। आप http://www.php.net/manual/en/language.namespaces.faq.php

+0

उत्तर के लिए धन्यवाद। हाउवर, मैं अभी भी आपके कोड की कुछ सुरक्षा प्राप्त करने के लिए कुछ सर्वोत्तम प्रथाओं या कामकाज जानना चाहता हूं। –

+0

मुझे नहीं लगता कि यह ओपी के सवाल का जवाब कैसे देता है। नेमस्पेस के पास पहुंच दृश्यता के साथ कुछ लेना देना नहीं है। –

+0

@ मार्कस मैं मानता हूं कि मेरा पुराना उत्तर स्पष्ट रूप से इसे संबोधित नहीं करता है, लेकिन यह कहता है कि (केवल एक चर के विपरीत) किसी भी नामस्थान में सबकुछ वैश्विक है, इसलिए आपके पास एक्सेस संशोधक का उपयोग करके सदस्यों को छिपाने का कोई तरीका नहीं है जैसे " निजी "या" संरक्षित "। – CodeCaster

8

में किसी भी नाम संकल्प विवरण के अभाव से है कि यह मान सकते हैं जब तक आज वहाँ दृश्यता को सीमित करने के लिए कोई भाषा निर्माण है। लेकिन तुम phpDocumentor के @internal के साथ अपने वर्ग पर टिप्पणी कर सकते हैं:

@internal टैग यह दर्शाता है कि संबद्ध स्ट्रक्चरल तत्वों सॉफ्टवेयर के इस टुकड़े के आंतरिक कामकाज के लिए विशुद्ध रूप से उपयोग किया जाता है, @api टैग के समकक्ष के रूप में इस्तेमाल किया जा सकता।

यह सुझाव देने के लिए एपीआई उपयोगकर्ता पर निर्भर है।

संबंधित मुद्दे