PHP7 में अशक्त वापसी प्रकार




nullable return-type (2)

PHP 7 रिटर्न प्रकार की घोषणाओं का परिचय देता है। जिसका अर्थ है कि मैं अब संकेत कर सकता हूं कि रिटर्न मान एक निश्चित वर्ग, इंटरफ़ेस, सरणी, कॉल करने योग्य या नए संकेत योग्य स्केलर प्रकारों में से एक है, जैसा कि फ़ंक्शन मापदंडों के लिए संभव है।

function returnHello(): string {
    return 'hello';
}

अक्सर ऐसा होता है कि एक मूल्य हमेशा मौजूद नहीं होता है, और हो सकता है कि आप या तो किसी प्रकार का कुछ, या अशक्त हो। जब आप पैरामीटर को उनके डिफ़ॉल्ट को शून्य ( DateTime $time = null ) पर सेट करके अशक्त बना सकते हैं, तो वापसी के प्रकारों के लिए ऐसा करने का कोई तरीका नहीं दिखता है। क्या यह वास्तव में मामला है, या मैं किसी भी तरह से नहीं कर रहा हूं कि यह कैसे करना है? ये काम नहीं करते हैं:

function returnHello(): string? {
    return 'hello';
}

function returnHello(): string|null {
    return 'hello';
}

PHP 7.1 अब अशक्त रिटर्न प्रकारों का समर्थन करता है। पहला RFC जो मैंने जोड़ा है, वह है:

function nullOrString(int $foo) : ?string
{
    return $foo%2 ? "odd" : null;
}

पुराना उत्तर:

चूंकि मेरी टिप्पणी वास्तव में इस सवाल का जवाब थी:

PHP 7 अभी तक अशक्त रिटर्न-प्रकारों का समर्थन नहीं करेगा, लेकिन वहाँ here पता करने के लिए बस है, यह PHP 7.1 में उतरने का लक्ष्य रखता है। यदि यह पास हो जाता है, तो सिंटैक्स सभी प्रकार के संकेत (दोनों प्रकार के रिटर्न और टाइप-संकेत) को प्रभावित करेगा।

public function returnStringOrNull(?array $optionalArray) : ?string
{
    if ($optionalArray) {
        return implode(', ', $optionalArray);//string returned here
    }
    return null;
}

यूनियन प्रकारों को जोड़ने के लिए एक प्रतिस्पर्धी RFC भी है , जो एक ही काम कर सकेगी, लेकिन अलग दिखेगी:

public function returnStringOrNull(array|null $optionalArray) : string|null
{
    if ($optionalArray) {
        return implode(', ', $optionalArray);//string returned here
    }
    return null;
}

अभी के लिए, हालांकि, आपको लिखना होगा:

public function returnStringOrNull( array $optionalArray = null)
{
    if ($optionalArray) {
        return implode(', ', $optionalArray);
    }
}

या बस वापसी प्रकार के अनुरूप होने के लिए एक खाली स्ट्रिंग लौटाएं, और गलत मान की जाँच करें:

public function returnStringOrNull( array $optionalArray = null) : string
{
    if ($optionalArray) {
        return implode(', ', $optionalArray);
    }
    return '';
}
//call
$string = $x->returnStringOrNull();
if (!$string) {
    $string = $x->returnStringOrNull(range(1, 10));
}

PHP 7.1 में here उपलब्ध हैं।

यह एक वाक्यविन्यास उदाहरण है:

public function getName(): ?string
{
    return $this->name; // name can be null
}

PHP 7.1 अब GA है और आप PHP 7.0 से अपग्रेड कर सकते हैं (केवल कुछ पिछड़े असंगत changes जिन्हें आपको जांचना है)





php-7