2016-02-18 15 views
14

मुझे php7 में वापसी प्रकारों के साथ समस्या है, विशेष रूप से "शून्य"।php7 शून्य वापसी प्रकार काम नहीं कर रहा है?

यह अन्य सभी प्रकार, int, string, null, bool, class वस्तुओं के साथ काम करता है।

लेकिन जब मैं शून्य का उपयोग करता हूं तो मुझे ऑब्जेक्ट शून्य का एक उदाहरण वापस करने की उम्मीद है, लेकिन हकीकत में इसे किसी भी वापसी की उम्मीद नहीं करनी चाहिए, जो कि शून्य के लिए है।

ध्यान दें:

public static function setResponseCode(int $code) : void 
    { 
     http_response_code($code); 

    } 

और त्रुटि संदेश है:

Uncaught TypeError: Return value of CodeBase\HttpRequester::setResponseCode() must be an instance of void, none returned in /var/www/html/src/HttpRequester.php:86 Stack trace: #0 /var/www/html/index.php(103): CodeBase\HttpRequester::setResponseCode(500) #1 {main} thrown in /var/www/html/src/HttpRequester.php on line 86

+1

कोशिश एक 'वापसी जोड़ने;' जो वैध है।चूंकि 'http_response_code' एक मान देता है, हो सकता है कि यह भ्रमित हो रहा है और सोच रहा है कि परिणाम – RiggsFolly

+3

@RiggsFolly लौटाया जा रहा है या हो सकता है कि ऐसी कोई चीज़ नहीं है (अभी तक) शून्य वापसी प्रकार के रूप में :) – PeeHaa

+0

@PeeHaa आह हाँ भूल गया कि मैं पढ़ रहा था आरएफसी डॉक्स – RiggsFolly

उत्तर

21

शून्य वापसी प्रकार पीएचपी 7.1 (के लिए कर रहे हैं मैं चल रहा हूँ पीएचपी 7.0.3

यहाँ

कोड है जिसे आपने तब तक जारी नहीं किया था जब आपने यह पूछा था)। From the RFC

Version: 0.2.1
Date: 2015-02-14 (v0.1, later withdrawn), 2015-10-14 (v0.2, revival)
Author: Andrea Faulds, [email protected]
Status: Implemented (PHP 7.1)

-4

क्यों बस नहीं का उपयोग

function printLn($a) { 
    echo $a; 
    return;} 

यह शून्य के समान है।

तुम भी बस गूंज

+4

क्यों? क्योंकि रिटर्न प्रकार घोषणाओं का विचार उस कार्य में किसी अन्य प्रकार के चर को वापस करने से बचने के लिए है .. क्या होगा यदि कोई अन्य प्रोग्रामर कुछ पैरामों को मिश्रण करना चाहे और जो चाहें उसे लौटाए? –

12

मैं सिर्फ इस सवाल का जवाब यहाँ मिल गया है के साथ वापसी निकाल सकते हैं: https://wiki.php.net/rfc/void_return_type

यह PHP में एक विशेषता हो जाएगा 7.1

+2

तो मूल रूप से, जवाब "अभी तक नहीं बल्कि जल्द ही (टीएम)" है – apokryfos

7

कोई वहाँ नहीं है, जब तक PHP 7.1। PHP 7.0 के लिए, आपको void फ़ंक्शंस/विधियों के लिए पूरी तरह से वापसी प्रकार को छोड़ना होगा।

function printLn($a) { 
    echo "$a\n"; 
} 

दुर्भाग्य से, आप तो इस समारोह/विधि के लिए कोई प्रकार सुरक्षा है, और यदि आप इसे से कुछ लौटने शुरू नहीं TypeError फेंक दिया जाएगा।

सौभाग्य से, PHP 7.1 fixes this:

Support for a new void return type is added. It requires that a function not return any value.

यह पीएचपी 7.1 के लिए सही सिंटैक्स है:

function should_return_nothing(): void { 
    return 1; // Fatal error: A void function must not return a value 
} 

यह स्थगित कर दिया गया the proposal that created return type hints दौरान:

We keep the current type options. Past proposals have suggested new types such as void, int, string or scalar; this RFC does not include any new types. Note that it does allow self and parent to be used as return types. ...

Future Work

Ideas for future work which are out of the scope of this RFC include:

  • Allow functions to declare that they do not return anything at all (void in Java and C)

NULL भी n है एक वापसी प्रकार के रूप में अनुमति दी।

1

tl; डॉ

वापसी प्रकार शून्य पीएचपी 7.1 जो पहले से ही उपलब्ध है के बाद से काम करता है।

कार्य वाक्य रचना है:

<?php 
function procedure(): void 
{ 
// return 'will not work'; 
} 

echo procedure(); 
संबंधित मुद्दे