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