परिवर्तनीय encapsulation, सेट/प्राप्त विधियां सर्वोत्तम प्रथाएं हैं, लेकिन हमारे पास एक परिवर्तनीय सार्वजनिक घोषित करने का मौका क्यों है यदि इसका उपयोग किसी भी तरह से नहीं किया जा रहा है? क्या यह बेहतर होगा अगर डिफ़ॉल्ट रूप से चर हमेशा निजी होते हैं, उन्हें सार्वजनिक बनाने का कोई मौका नहीं है क्योंकि मैंने पढ़े गए सभी ट्यूटोरियल का कहना है कि उन्हें सेट/प्राप्त विधियों के साथ encapsulated किया जाना चाहिए? क्या कम से कम PHP ओओपी में सार्वजनिक चर के लिए कोई वैध उपयोग केस है?क्या PHP ओओपी में सार्वजनिक चर का उपयोग करने के लिए कोई वैध उपयोग केस है?
उत्तर
असल में यह सिर्फ दूसरी तरफ है: सैद्धांतिक रूप से गेटर्स/सेटर्स गलत हैं। गुण किसी ऑब्जेक्ट की स्थिति को परिभाषित करते हैं, जहां विधियां व्यवहार को परिभाषित करती हैं। गेटर्स/सेटर्स केवल गुणों को पढ़ने और लिखने के लिए अवरुद्ध करते हैं, लेकिन वे अर्थपूर्ण अर्थ को पूरी तरह से तोड़ते हैं: अब ऑब्जेक्ट की स्थिति पढ़ना ऑब्जेक्ट का व्यवहार है।
गुण गुण की तरह लग रहे करने के लिए बनाने के लिए फिर से वहाँ सड़क :) https://wiki.php.net/rfc/propertygetsetsyntax
सेट पर एक आरएफसी है/तरीकों जाओ सर्वोत्तम प्रथाओं हैं, लेकिन यह है कि अगर हम क्यों एक चर सार्वजनिक घोषणा करने के लिए एक मौका है वैसे भी इस्तेमाल नहीं किया जाना चाहिए?
सर्वोत्तम प्रथाओं का उपयोग नहीं किया जाना चाहिए और ऐसा नहीं है। एक भाषा को विभिन्न उपयोग-मामलों के लिए विभिन्न औजारों की पेशकश करने की आवश्यकता होती है और यह सुसंगत होना चाहिए।
PHP ऑब्जेक्ट्स हमेशा सार्वजनिक सदस्यों का समर्थन करते हैं और जब अलग-अलग संगतताएं पेश की जाती हैं, पिछली संगत कारणों से सार्वजनिक सदस्य बहुत उपयोगी होते हैं।
क्या बेहतर होगा यदि डिफ़ॉल्ट रूप से चर हमेशा निजी होते हैं, तो उन्हें सार्वजनिक बनाने का कोई मौका नहीं है क्योंकि मैंने पढ़े गए सभी ट्यूटोरियल का कहना है कि उन्हें सेट/प्राप्त विधियों के साथ encapsulated किया जाना चाहिए?
उस प्रश्न का विशेष रूप से उत्तर नहीं दिया जा सकता है, यह बहुत ही व्यक्तिपरक है और कई अलग-अलग उपयोग-मामले हैं जिनके परिणामस्वरूप एक अलग उत्तर होंगे।
क्या कम से कम PHP ओओपी में सार्वजनिक चर के लिए कोई वैध उपयोग केस है?
पिछड़ा संगतता के साथ शुरू करें। यदि आप अपने कोड को दोबारा नहीं कर सकते हैं, लेकिन इसे हर समय पूरी तरह से लिखना होगा, यह बहुत महंगा होगा।
चलो देखते हैं .. यह CakePHP EmailComponent से वास्तविक दुनिया ईमेल एपीआई कक्षा है। इस वर्ग आप केवल करने की आवश्यकता है उपयोग करने के लिए "सेट" कुछ संपत्ति तो बस send()
$this->Email->to = '[email protected]';
$this->Email->from = '[email protected]';
$this->Email->title = 'xxx';
$this->Email->msg = 'blabla..';
$this->Email->send();
वास्तव में निजी संपत्तियों और समारोह इस वर्ग के अंदर का एक बहुत है, लेकिन यह निजी है।
कक्षा में कुछ करने की ज़िम्मेदारी है (एकल)। Encapsulation केवल उस चीज़ को प्रकाशित करना है जो लोग उस चीज़ को करने के लिए उपयोग करते हैं और तकनीकी/आधारभूत संरचना को निजी के अंदर रखते हैं।
- 1. django व्यवस्थापक के लिए वैध उपयोग केस?
- 2. क्या ओओपी PHP में उपयोग करने लायक है?
- 3. सी # में वैध केस का उपयोग क्यों कर रहा है?
- 4. क्या यह जावास्क्रिप्ट बंद करने के लिए एक वैध उपयोग केस है?
- 5. क्या मुझे जावा स्थिर चर घोषित करने के लिए ऊपरी-केस नामकरण का उपयोग करना चाहिए?
- 6. PHP में एक चर चर का उपयोग करने के लिए कब?
- 7. किसी विधि में 'आउट' या 'रेफरी' पैरामीटर का उपयोग करने का वैध कारण क्या है?
- 8. क्या स्विच फ़ंक्शन में उपयोग करने के लिए कोई "अन्य केस" है?
- 9. कॉलिंग सम्मेलन फास्टकॉल का उपयोग करने के लिए कोई वास्तविक उपयोग केस?
- 10. वैकल्पिक अनुमान के लिए केस का उपयोग
- 11. टाइपपीफ का वैध उपयोग?
- 12. एक सामान्य निर्माता के लिए उपयोग केस क्या है?
- 13. जावा में नरम संदर्भ के लिए उपयोग केस क्या है?
- 14. अन्य कार्यों में चर का उपयोग करने के लिए flask.g का उपयोग करने में असमर्थ
- 15. PHP में स्विच केस 'या' का उपयोग कैसे करें?
- 16. Response.Redirect ("SomeURL", false) के लिए वैध उपयोग क्या है?
- 17. क्या जावास्क्रिप्ट पुस्तकालयों को लोड करने के लिए सार्वजनिक सीडीएन का उपयोग न करने का कोई फायदा है?
- 18. क्या सी ++ में बाहरी दायरे में स्थानीय चर का उपयोग करने का कोई तरीका है?
- 19. क्या स्थानीय स्थानीय चर का उपयोग करने के लिए कोई रनटाइम लाभ है?
- 20. क्या System.Uri का उपयोग करने का कोई कारण है?
- 21. क्या ओओपी के लिए कोई नियम हैं?
- 22. PHP में लैम्ब्डा का क्या उपयोग है?
- 23. सार्वजनिक-कुंजी प्रमाणीकरण का उपयोग करने के लिए सेटअप SFTP
- 24. क्या यह सी # में सार्वजनिक चर का उपयोग करना ठीक है अगर यह पढ़ा जाता है?
- 25. PHP क्लास इंस्टेंटेशन। ब्रांड्स का उपयोग करने या उपयोग करने के लिए?
- 26. इंटरलाक्ड क्लास का उपयोग करने के विपरीत अस्थिर कीवर्ड का उपयोग करने का कोई फायदा है?
- 27. अंतर्निहित प्रकार को enums में निर्दिष्ट करने के लिए उपयोग-केस क्या है?
- 28. ओओपी PHP
- 29. PHP में बनाम ओओपी
- 30. पर्ल और तर्क में इथ्रेड (दुभाषिया धागे) के लिए केस का उपयोग या उपयोग करने के लिए उपयोग करें?
कक्षाओं (जैसे विरासत/ओवरराइटिंग) में संरक्षित चर के लिए उपयोग के मामले हैं, लेकिन मैं किसी के लिए सार्वजनिक लोगों के बारे में नहीं जानता।जो कक्षाओं में PHP 4 var $ var घोषणा के कारण हो सकता है जिसे PHP 5 में सार्वजनिक रूप से व्याख्या किया जाता है। – Hajo
सरल उत्तर: क्योंकि ** ** (चाहने वाले) के लिए गेटर्स और सेटर्स का उपयोग करने के लिए कई पूर्ण मान्य कारण हैं, इसलिए आप बस सार्वजनिक चर का उपयोग कर सकते हैं। गतिशील ओप के अधिकांश मामलों में – CodeCaster
@ कोडकस्टर जो मुझे लगता है कि खराब डिजाइन दिखाता है। – Hajo