2016-10-10 12 views
6

मैं एक इटरेटर इंटरफेस को लागू कर रहा हूँ और अगर मैं इसे (संदर्भ http://php.net/manual/en/class.iterator.php निम्नलिखित) अदिश लौटने को लागू है, मैं इस त्रुटि मिली: PHP के अनुसारPHP7: स्केलर रिटर्न प्रकार घोषणा पूर्णांक स्वीकार नहीं करनी चाहिए?

class Collection implements \Iterator 
{ 
    public function key(): \scalar 
    { 
     return key($this->colecao); 
    } 
    // other methods implementations... 
} 

:

TypeError: Return value of Collection::key() must be an instance of scalar, integer returned

वर्ग कार्यान्वयन

Scalar type declarations come in two flavours: coercive (default) and strict. The following types for parameters can now be enforced (either coercively or strictly): strings (string), integers (int), floating-point numbers (float), and booleans (bool).

: संदर्भ, पूर्णांक एक अदिश मूल्य (http://php.net/manual/en/migration70.new-features.php) विचार किया जाना चाहिए क्या मेरे कोड में कुछ गलती है, क्या यह एक बग होगा?

किसी भी स्पष्टीकरण के लिए धन्यवाद!

+0

'सार्वजनिक फ़ंक्शन कुंजी(): int' आपको जो चाहिए वह है। आपको यह निर्दिष्ट करना होगा कि यह किस स्केलर प्रकार से लौटाता है। –

+0

रिटर्न प्रकार केवल http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.types स्केलर जैसी कोई चीज़ नहीं है जिसे मैंने – RiggsFolly

+0

के बारे में सुना है PHP दस्तावेज़ों में दिखाए गए प्रकार वास्तविक प्रकार नहीं हैं जिनका आप कोड में उपयोग कर सकते हैं, वे सिर्फ मानव पाठकों के लिए वर्णनात्मक हैं। जैसे 'मिश्रित' नाम का कोई प्रकार नहीं है, इसका मतलब यह है कि फ़ंक्शन एकाधिक प्रकारों को वापस कर सकता है। – Barmar

उत्तर

5

PHP में \scalar के नाम से जाना जाने वाला कोई प्रकार नहीं है। PHP केवल those प्रकारों का समर्थन करता है। और आपका \scalar प्रकार ऐसा लगता है कि यह एक और वर्ग है।

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