मैं एक PHP 7 फ़ंक्शन को परिभाषित करना चाहता हूं जो मिश्रित प्रकार का पैरामीटर लेता है। (जो मैं चाहता हूं वह सी # में एक सामान्य प्रकार पैरामीटर के बराबर है; यदि PHP 7 में अनुकरण करने का एक बेहतर तरीका है, तो कृपया मुझे बताएं।)PHP 7: मिश्रित पैरामीटर प्रकार का उपयोग अपने कार्यों में कैसे करें?
मेरा कोड निम्नानुसार है।
<?php
declare (strict_types = 1);
function test (mixed $s) : mixed {
return $s;
}
// Works
echo gettype ('hello');
// Does not work
echo test ('hello');
?>
जब मैं यह कोड चलाता हूं, तो मुझे निम्न मिलता है।
Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of mixed, string given, called in mixed.php on line 11 and defined in mixed.php:4
Stack trace:
#0 mixed.php(11): test('hello')
#1 {main}
thrown in mixed.php on line 4
अगर मैं कॉल बाहर टिप्पणी परीक्षण करने के लिए(), कोड ठीक चलाता है, तो जाहिरा तौर पर यह मेरे समारोह घोषणा में मिश्रित पैरामीटर प्रकार का उपयोग करने के लिए कम से कम ठीक है।
मुझे पता है कि अंतर्निहित PHP फ़ंक्शन जैसे Gettype() मिश्रित पैरामीटर ले सकते हैं, हालांकि मुझे नहीं पता कि वे आंतरिक रूप से सख्त टाइपिंग का उपयोग कर रहे हैं या नहीं।
मुझे लगता है कि "मिश्रित" का उपयोग छद्म प्रकार के रूप में PHP documentation में भी किया जाता है, इसलिए मैं एक PHP कीवर्ड के रूप में "मिश्रित" के उद्देश्य को गलत समझ सकता हूं, लेकिन जो कुछ मैं यहां देख रहा हूं वह कम से कम मुझे दर्शाता है यह एक वैध कीवर्ड है। क्या मैं बस इसे इस तरह से उपयोग कर रहा हूं जिसका उद्देश्य यह नहीं है?
अंत में, मुझे एहसास है कि मैं पैरामीटर प्रकार निर्दिष्ट नहीं करके बस यह सब बाधित कर सकता हूं, लेकिन मैं अपने सभी पैरामीटर और रिटर्न प्रकारों को निर्दिष्ट करके सुसंगत होना चाहता हूं।
धन्यवाद और अगर मैं कोई अतिरिक्त जानकारी प्रदान कर सकता हूं तो कृपया मुझे बताएं।
पर उल्लेख यह भी के लिए काम करता -operator हाँ, 'mixed' कोई वास्तविक प्रकार नहीं है। और संगत होने के कारण यहां उचित अर्थशास्त्र के लिए ऑर्थोगोनल है। – mario
मिश्रित एफवाईआई एक प्रकार नहीं है। (http://php.net/manual/en/language.pseudo-types.php) यह केवल एक ** छद्म प्रकार ** है: एक संकेत है कि किसी भी प्रकार को किसी विधि से पास या लौटाया जा सकता है ... या शायद एक वेरिएबल के लिए जिसे किसी भी कारण से मिश्रित रूप से मिश्रित किया गया था ... सी # के विपरीत, जो आप हासिल करने की कोशिश कर रहे हैं वह PHP में मुश्किल हो सकता है, विशेष रूप से ** सख्त_टाइप सत्य पर सेट **। हालांकि, आप सख्त टाइपिंग के बिना लगभग समान प्रभाव प्राप्त कर सकते हैं, इस मामले में आपके तरीके किसी भी प्रकार को स्वीकार कर सकते हैं जब तक आप किसी भी प्रकार के संकेत नहीं देते हैं। हालांकि सी # प्रोग्रामर के लिए जो अभी भी खराब है ** ** PHP का रस ** – Poiz
आपको बहुत अधिक मारियो और पोइज़ धन्यवाद। ऐसा लगता है कि मैं एक टिप्पणी के रूप में/* मिश्रित */जोड़ने के लिए बस बस जाऊंगा। – FSharpN00b