2012-02-29 12 views
6

संभव डुप्लिकेट:
traits in php – any real world examples/best practices?PHP में लक्षणों के लिए संभावित उपयोग परिदृश्य क्या हैं?

स्थितियों किस तरह का में एक PHP में लक्षण का प्रयोग करेंगे? मेरे पास इसका एक अच्छा अच्छा विचार है, लेकिन मुझे उनके द्वारा लिखे गए एप्लिकेशन में उनका उपयोग करने का कोई तरीका नहीं लगता है, लेकिन ऐसा इसलिए हो सकता है क्योंकि उस समय लक्षणों की आवश्यकता नहीं होती है।

एक परिदृश्य मुझे एहसास हुआ है लक्षण की जरूरत है:

  • घटनाक्रम। एक वर्ग होने के बजाय जो पर्यवेक्षक पैटर्न लागू करता है और अन्य सभी वर्गों को विरासत में डाल देता है, बस इसे एक विशेषता बनाते हैं और उन वर्गों को देते हैं जो घटनाओं को आग लगाना चाहते हैं या विशेषता का उपयोग करने के लिए सदस्यता लेना चाहते हैं। उदाहरण के लिए, वाईआई ढांचा एक विशेषता का उपयोग करने के बजाय CComponent कक्षा में सामान लागू करके गलत कर रहा है।

मूल रूप से कार्यक्षमता जिसे कक्षाओं के बीच साझा किया जा सकता है, लेकिन कई वर्ग पदानुक्रमों के साथ फैल सकता है लक्षणों का उपयोग करना चाहिए। एक घटना प्रणाली की तुलना में लक्षणों का लाभ अन्य अन्य परिदृश्यों का लाभ उठा सकता है?

उत्तर

-4

समस्या का पता लगाने वाला मुद्दा जावा के इंटरफेस के साथ संबोधित करता है - समान वर्ग पदानुक्रम में नहीं होने वाले वर्गों के बीच सामान्य व्यवहार (इंटरफेस द्वारा प्रतिनिधित्व के रूप में) को कैसे लागू किया जाए।

सी ++ जैसी भाषाओं के साथ, जिसमें केवल दो विरासत हैं, दो अलग-अलग वर्गों से दो वस्तुओं के लिए उसी संदर्भ में उपयोग किया जाना चाहिए, दोनों वर्गों को समान पदानुक्रम से होना था। कभी-कभी यह एक ही संदर्भ में विभिन्न वर्गों से वस्तुओं का उपयोग करने के लिए बस कृत्रिम पदानुक्रम बनाने का मतलब था।

जावा ने इंटरफेस के माध्यम से इस समस्या का सामना किया - एक इंटरफ़ेस अनिवार्य रूप से व्यवहार के प्रावधान को नियंत्रित करने वाला अनुबंध है ताकि एक वर्ग की वस्तु को एक अलग वर्ग के किसी ऑब्जेक्ट के लिए प्रतिस्थापित किया जा सके क्योंकि यह वही व्यवहार - इंटरफ़ेस का वादा करता है। लेकिन उन्हें एक ही पदानुक्रम से नहीं होना चाहिए।

PHP लक्षण इस विचार को शामिल करते हैं। एक विशेषता एक प्रकार का इंटरफ़ेस है, एक वर्ग जिसमें व्यवहार शामिल है ताकि इसका उपयोग उस संदर्भ में किया जा सके जिसके लिए उस व्यवहार की आवश्यकता होती है। इसलिए, किसी भी जावा इंटरफ़ेस उदाहरण को PHP लक्षण उदाहरण पर ले जाना चाहिए। PHP इंटरटैस जावा इंटरफेस के लिए थोड़ा अलग हैं, हालांकि, चूंकि लक्षणों में पूर्ण फ़ंक्शन परिभाषाएं हो सकती हैं, जबकि जावा इंटरफेस में केवल घोषणाएं हो सकती हैं (सामान्य PHP idiosyncrasy!)

+6

PHP में भी [इंटरफेस] (http://php.net है /manual/en/language.oop5.interfaces.php), अलग-अलग लक्षणों से ...! यदि आप सेब से सेब की तुलना करना चाहते हैं, तो गुण रूबी या अच्छी तरह से भाषाओं जैसे संगीत से गुणों की तरह हैं। – deceze

+3

मुझे नहीं लगता कि इंटरफेस के पास लक्षणों के साथ बहुत कुछ करना है। – Tower

+0

मैं इसे यहां छोड़ दूंगा http://compsci.ca/v3/viewtopic.php?t=14785 –

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