Please support if you like my work by payment through upi: sinhamit@icici or payment by bank
account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB
Type Declaration in Category: पीएचपीलेवल2 by amit
🕙 Posted on 2023-06-20 at 06:01:56
वापसी- प्रकार (return type) और प्रकार- संकेत (type-hinting) पर अधिक
पिछले पृष्ठ में , आपने सीखा है कि वैकल्पिक return
कथन का उपयोग करके मान (values) लौटाए/array
मान लौटाकर समान परिणाम प्राप्त किया जा सकता है। आप उस सरणी (array) से अलग-अलग आइटम (elements) कई तरीकों से प्राप्त कर सकते हैं:
<?php
function
numbers( int
$x, int
$y ) {
$sum = $x + $y;
$subt = $x - $y;
$multi = $x * $y;
$div = $x / $y;
$mod = $x % $y;
return
[ $sum, $subt, $multi, $div, $mod ];
}
// 1) सरणी विनाश (array destructuring) के बाद सरणी के प्रत्येक सदस्य को व्यक्तिगत रूप से एकत्र किया जाएगा।
[
$a, $b, $c, $d, $e ]
= numbers( 4, 3 );
echo $a, ' ', $b, ' ', $c, ' ', $d, ' ', $e; // आउटपुट 7 1 12 1.3333333333333 1 है
echo '<br />';
// 2) PHP 7.1.0 से पहले, केवल समतुल्य विकल्प list() का उपयोग रहा है
list
( $a, $b, $c, $d, $e ) = numbers( 12, 5 );
echo $a, ' ', $b, ' ', $c, ' ', $d, ' ', $e; // आउटपुट 17 7 60 2.4 2 है
echo '<br />';
/* 3) लौटाए गए डेटा-प्रकार सरणी है, आप implode() फ़ंक्शन सरणी तत्वों को एक स्ट्रिंग में शामिल होने के लिए, json_encode()
फ़ंक्शन जो किसी मान का JSON प्रतिनिधित्व देता है, आदि भी उपयोग कर सकते हैं। */
foreach
( numbers( 64, 6 ) as
$item ) {
echo $item . ' ';
} // आउटपुट 70 58 384 10.666666666667 4 है?>
उपरोक्त कोड में, आप एक विशिष्ट (typical) उदाहरण देख सकते हैं जो आम तौर पर कस्टम फ़ंक्शन से परिणाम के रूप में एकाधिक मान निकालने के लिए उपयोग किया जाता है। $a, $b, $c, $d, $e चर नाम हैं, जो अलग-अलग आइटम को लौटाए गए सरणी से संग्रहीत करेंगे। उपरोक्त उदाहरण में उपयोग की गई पहली विधि को सरणी विनाशकारी (array destructuring) कहा जाता है, जिसमें इन नए घोषित चर नामों को []
वर्ग कोष्ठक में रखा जाता है। दूसरी (पुरानी) विधि है जिसमें list()
फ़ंक्शन का उपयोग किया गया है। ऐसे कई तरीके हैं जिनसे किसी सरणी से डेटा निकाला (extract) जा सकता है। बाद के पाठों में, आप देखेंगे कि while
लूप का उपयोग करके डेटाबेस से डेटा निकाला जा सकता है।
प्रकार की घोषणा (Type Declaration):
पिछले पृष्ठ में, आपने देखा है कि bool int float string array
(आरक्षित कीवर्ड) पैरामीटर के लिए टाइप-हिंटिंग के रूप में उपयोग किए जाते हैं। टाइप डिक्लेरेशन को फंक्शन आर्ग्युमेंट्स, रिटर्न वैल्यूज और PHP 7.4.0 के साथ क्लास प्रॉपर्टीज में जोड़ा जा सकता है। वे सुनिश्चित करते हैं कि कॉल के समय मान निर्दिष्ट प्रकार का है, अन्यथा एक TypeError दिखाई (throw) जाती है। उपरोक्त स्केलर प्रकार के उपनाम (Aliases) समर्थित नहीं हैं। इसके बजाय, उन्हें क्लास या इंटरफ़ेस नामों के रूप में माना जाता है। उदाहरण के लिए, boolean
प्रकार की घोषणा के रूप में उपयोग करने के लिए मान को bool
प्रकार के बजाय, instanceof
क्लास या इंटरफ़ेस बूलियन होने की आवश्यकता होगी।
<?php function test(boolean $param) {}
test(true); // PHP 8 में ERROR को निम्नानुसार आउटपुट करता है: ?>
Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in C:\xampp\
Fatal error: Uncaught TypeError: test(): Argument #1 ($param) must be of type boolean, bool given, called in C:\xampp\
किसी वापसी मान के प्रकार की घोषणा को कस्टम फ़ंक्शन में भी नियंत्रित किया जा सकता है। वापसी प्रकार की घोषणा के लिए सिंटैक्स ()
कोष्ठक और :
(कोलन प्रतीक) के बाद लिखा जाता है। आइए कुछ सरल उदाहरण देखें:
<?php
function
addition():int
{
$result = 3.4 + 4.2; var_dump( $result );
echo '<br />';
return
$result;
} // वापसी प्रकार (return type) int है
var_dump( addition() ); // आउटपुट float(7.6)<br />int(7) है?>
उपरोक्त उदाहरण में आप इसे देख सकते हैं $result = 3.4 + 4.2; का आउटपुट फ्लोट (7.6) है, जब var_dump()
कस्टम फ़ंक्शन के अंदर उपयोग किया जाता है। हालांकि, वापसी प्रकार int
है, और इसलिए, उपरोक्त उदाहरण में अंतिम पंक्ति int(7) आउटपुट करती है और value के बाद . (दशमलव बिंदु) हटा (छांट) दिया गया है। हालाँकि, जब उपरोक्त उदाहरण सख्त मोड में उपयोग किया जाता है, तो निम्नलिखित TypeError दिखाई देती है:
Fatal error: Uncaught TypeError: addition(): Return value must be of type int, float returned in C:\xampp\
निम्नलिखित उदाहरण सख्त मोड में भी ERROR नहीं दिखाएगा। mixed
प्रकार की घोषणा PHP 8.0.0 में पेश की गई है और यह bool int float string array object Resource null में से एक डेटा-प्रकार हो सकता है। इसका अर्थ है कि इनमें से किसी भी डेटा प्रकार को एक कस्टम फ़ंक्शन में (तर्कों के रूप में) लिया जा सकता है, और इसे OUTPUT के रूप में भी वापस किया जा सकता है।
<?php
function
max_int_value( mixed
$param ):mixed
{
return $param + 1;
}
var_dump( max_int_value( PHP_INT_MAX ) ); // आउटपुट float(9.2233720?>
संघ (Union) प्रकार
संघ (Union) प्रकार PHP 8.0.0 के रूप में उपलब्ध हैं। एक संघ प्रकार की घोषणा एक के बजाय कई अलग-अलग सरल प्रकारों के मूल्यों को स्वीकार करती है। कस्टम फ़ंक्शन में, आप दो या दो से अधिक सरल प्रकारों के बीच |
(पाइप प्रतीक, Enter कुंजी के ठीक ऊपर, Shift कुंजी का भी उपयोग करें) का उपयोग कर सकते हैं।
<?php
function
cube( int|float
$param ):int|float
{
return $param ** 3;
}
var_dump( cube( 4 ) ); // आउटपुट int(64)?>
mixed
प्रकार-
अशक्त (Nullable) प्रकार
PHP 7.1.0 के अनुसार, प्रकार-?
(प्रश्न चिह्न) के साथ उपसर्ग (prefix) करके अशक्त (nullable) चिह्नित किया जा सकता है। यह दर्शाता है कि मान निर्दिष्ट-null
प्रकार का हो सकता है। जब आप निम्नलिखित उदाहरण में पैरामीटर से ?
(प्रश्न चिह्न) हटाते हैं, और कस्टम फ़ंक्शन cuberoot() में एक तर्क के रूप में null पारित करते हैं तब, त्रुटि के रूप में आउटपुट नीचे दिखाया जाएगा।
<?php
function
cuberoot( ?float
$param ):?float
{
return $param ** (1/3);
}
var_dump( cuberoot( 3 ) ); // आउटपुट float(1.44224957?>
Fatal error: Uncaught TypeError: cuberoot(): Argument #1 ($param) must be of type float, null given, called in C:\xampp\
अशक्त संघ (Nullable union) प्रकार
null प्रकार को यूनियनों के हिस्से के रूप में समर्थित किया जाता है, जैसे कि एक अशक्त संघ बनाने के लिए int|
इस्तेमाल किया जा सकता है। float|
के सामान्य मामले के लिए मौजूदा संकेतन ?float
को एक संक्ष्पित (छोटा रुप) माना जाता है। सावधानी: null को एक स्टैंडअलोन प्रकार के रूप में उपयोग नहीं किया जा सकता है।
झूठा-छद्म (false pseudo) प्रकार
शाब्दिक false
प्रकार को यूनियनों के हिस्से के रूप में समर्थित किया जाता है, और ऐतिहासिक कारणों से शामिल किया जाता है क्योंकि विफलताओं के लिए null के बजाय कई आंतरिक फ़ंक्शन false
वापस करता है। ऐसे फ़ंक्शन का एक उत्कृष्ट उदाहरण strpos() है। सावधानी: स्टैंडअलोन प्रकार के रूप में false
उपयोग नहीं किया जा सकता (nullable स्टैंडअलोन प्रकार सहित)।
जैसे, false , false|null
और ?false
की अनुमति नहीं है। true शाब्दिक प्रकार मौजूद नहीं है। यदि bool
संघ प्रकार में प्रयोग किया जाता है, तो false अतिरिक्त रूप से उपयोग नहीं की जा सकती है, यानी bool|false की अनुमति नहीं है। int|INT की भी अनुमति नहीं है।
Intersection प्रकार
एक प्रतिच्छेदन (intersection) प्रकार की घोषणा उन मानों को स्वीकार करती है जो एक एकल के बजाय कई क्लास-प्रकार की घोषणाओं को संतुष्ट करते हैं। प्रतिच्छेदन प्रकार सिंटैक्स T1&T2&.... का उपयोग करके निर्दिष्ट किए गए हैं। प्रतिच्छेदन प्रकार PHP 8.1.0 के रूप में उपलब्ध हैं।
केवल रिटर्न प्रकार
void
void
एक रिटर्न प्रकार है जो इंगित करता है कि फ़ंक्शन कोई मान नहीं लौटाता है। इसलिए यह संघ प्रकार की घोषणा का हिस्सा नहीं हो सकता। यह PHP 7.1.0 के रूप में उपलब्ध है। यहां तक कि जब आप एक कस्टम फ़ंक्शन से NULL
वापस लौटना चाहते हैं, तब ERROR को नीचे दिखाया जाएगा।
<?php function coo():void { return NULL; } var_dump( coo() ); // आउटपुट ERROR दिखाता है ?>
Fatal error: A void function must not return a value (did you mean "return;" instead of "return null;"?) in C:\xampp\
<?php function doo():void { return; } var_dump( doo() ); // आउटपुट कोई त्रुटि नहीं दिखाता है: NULL ?>
<?php function foo():void { echo "Hello"; } var_dump( foo() ); // Outputs HelloNULL ?>
never
never
एक रिटर्न प्रकार है जो दर्शाता है कि फ़ंक्शन (कुछ भी) वापस नहीं करता है। इसका मतलब यह है कि यह या तो exit()
फ़ंक्शन को कॉल करता है, अपवाद (exception) दिखाता है, या अनंत लूप है। इसलिए यह संघ प्रकार की घोषणा का हिस्सा नहीं हो सकता। यह PHP 8.1.0 के रूप में उपलब्ध है। टाइप थ्योरी की भाषा में, never
नीचे का प्रकार होता है। मतलब यह हर दूसरे प्रकार का उप प्रकार है और inheritance के दौरान किसी अन्य रिटर्न प्रकार को बदल (replace) सकता है।
static
मान उसी क्लास का instanceof
होना चाहिए, जिस method से काॅल किया जाता है। static
PHP 8.0.0 के रूप में उपलब्ध है।
इस पृष्ठ में आपको कई नए आरक्षित शब्दों (keywords) से परिचित कराया गया है, जैसे static void instanceof never
, जो शायद आपको अभिभूत कर गए हों। Advance PHP अनुभाग में, इनमें से प्रत्येक कीवर्ड और फ़ंक्शंस की व्याख्या करना उचित होगा। उदाहरण के लिए, exit()
फ़ंक्शन का उपयोग अक्सर तब किया जाता है जब आप किसी को दूसरे वेब-पेज पर पुनर्निर्देशित (redirect) करना चाहते हैं, जैसे कि भुगतान (payment) विधियाँ, आदि।
Leave a Comment:
Amit Sinha March 2nd, 2023 at 9:30 PM
😃 😄 😁 😆 😅 😂 😉 😊 😇 😍 😘 😚 😋 😜 😝 😶 😏 😒 😌 😔 😪 😷 😵 😎 😲 😳 😨 😰 😥 😢 😭 😱 😖 😣 😞 😓 😩 😫 😤
Ribhu March 3rd, 2023 at 9:30 PM
🐵 🐒 🐶 🐩 🐺 🐱 🐯 🐅 🐆 🐴 🐎 🐮 🐂 🐃 🐄 🐷 🐖 🐗 🐽 🐏 🐑 🐐 🐪 🐫 🐘 🐭 🐁 🐀 🐹 🐰 🐇