Avatar ·

PHP में ट्रेट्स (Traits) बनाम इंटरफेसेस (Interfaces): कब क्या उपयोग करें?

सभी को नमस्ते! मैं एक शुरुआती PHP डेवलपर हूं, और मैं लगातार भ्रमित हो जाता हूं कि कब Traits का उपयोग करना है और कब Interfaces का। दोनों ही कोड को पुन: उपयोग करने में मदद करते हैं, लेकिन मुझे लगता है कि ये अलग-अलग चीजें हैं। यहां एक विशिष्ट उदाहरण है। मेरे पास `Car` क्लास और `Bicycle` क्लास है। दोनों चल सकते हैं, इसलिए मैंने `move()` मेथड के साथ `MovableInterface` इंटरफेस बनाया। यह काम करता है, लेकिन प्रत्येक क्लास में मुझे `move()` मेथड का अपना इम्प्लीमेंटेशन लिखना पड़ता है। फिर मैंने Traits के बारे में सीखा। मैंने `startEngine()` मेथड के साथ `EngineTrait` ट्रेट बनाया। अब मैं इसे `Car` क्लास से जोड़ सकता हूं, लेकिन `Bicycle` से नहीं, क्योंकि साइकिल में इंजन नहीं होता। और यहां मैंने सोचा: क्या `startEngine()` को इंटरफेस का मेथड बनाना बेहतर नहीं होता? लेकिन तब मुझे इसे `Bicycle` में भी इम्प्लीमेंट करना पड़ता, जहां इसकी आवश्यकता नहीं है।