/ इस PHP कोड में मैं C ++ स्टाइल ओवरलोडिंग की नकल कैसे कर सकता हूं [बंद] - php, oop, बहुरूपता, ओवरलोडिंग

मैं इस PHP कोड में बंद सी ++ शैली अधिभार की नकल कैसे कर सकता हूं [बंद] - php, oop, polymorphism, overloading

मेरा PHP में एक स्थिर कार्य है:

public static function func( $foo, $bar ) {

}

कहा पे $bar एक पूर्णांक है। मैं एक समान लागू करना चाहता हूं func पर कहा $bar एक तार है। C ++ में मैं ओवरलोडिंग का उपयोग करूंगा लेकिन PHP प्रलेखन से पता चलता है कि ओवरलोडिंग सी + + के समान नहीं है। क्या कोई अन्य तरीका है जिससे मुझे वह हासिल हो सकता है जो मैं चाहता हूं?

एक परिवर्तनकारी जिसके बारे में मैंने सोचा था कि यह कुछ बहुरूपता है, लेकिन यह एक प्रकार का अतिवाद लगता है ?:

के साथ एक इंटरफ़ेस बनाएं func परिभाषित (कोई कार्यान्वयन के साथ) और बस इसे दो अलग-अलग तरीकों से लागू करें। इसलिए:

interface Something {
public static function func( $foo, $bar );
}

class Something1 implements Something {
public static function func( $foo, $bar ) {
// some implementation
}
}

class Something2 implements Something {
public static function func( $foo, $bar ) {
// some other implementation
}
}

बहुत धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

C ++ या किसी अन्य के अर्थ में ओवरलोडिंगस्थिर टाइप की भाषा का कोई मतलब नहीं है php में, क्योंकि आपको एक प्रकार का संकेत बनाने की आवश्यकता नहीं है। यह कमजोर टाइप की गई भाषाओं की प्रकृति है और इसलिए यह php में यह सुविधा होने से कोई लाभ नहीं होगा। आप अपने फंक्शन में किसी भी प्रकार का कोई भी वैरिएबल पास कर सकते हैं। वस्तुओं के मामले में आपको बहुरूपी व्यवहार प्राप्त करने के लिए विरासत / इंटरफेस का उपयोग किए बिना बहुरूपता है। कहा जाता है कि बतख टाइपिंग।

यदि आपको स्ट्रिंग / इंट के लिए अलग कार्यान्वयन की आवश्यकता है, तो बस प्रकार की जांच करें और उसी फ़ंक्शन में कार्यान्वयन प्रदान करें।


जवाब के लिए 0 № 2

एक फ़ंक्शन बनाएं, और उस पैरामीटर के प्रकार के आधार पर, अलग-अलग चीजें करें या वास्तविक फ़ंक्शन, func_int और config_string को कॉल करें। आप प्रभावी रूप से स्वयं प्रेषण कर रहे हैं।

प्रकार की जाँच के लिए, वहाँ हैं GetType, और यह is_.. कार्य करता है।


जवाब के लिए 0 № 3

ऐसा कुछ मदद कर सकता है, आप पहचान सकते हैं कि किस प्रकार $ बार है और फिर संबंधित फ़ंक्शन को कॉल करें।

public static function func( $foo, $bar ) {
if (is_int($bar)) {
self::funcBarInteger($foo, $bar);
} else {
self::funcBarString($foo, $bar);
}
}

public static function funcBarInteger( $foo, $bar ) {

}

public static function funcBarString( $foo, $bar ) {

}